The Python language is officially supported on the platform.
To ensure our deployment system considers your application as a Python
application, a file
setup.py should be
present at the root of your project, defining the dependencies of your app.
The preferred way to manage dependencies and python version is by using the
pipenv tool. When creating a project with pipenv, the Python version is
frozen in the
Pipfile file, i.e.:
[requires] python_version = "3.10"
The deployment system will use this information to install the last available
version respecting this constraint. In the previous example Python
would be installed.
python_version field only accepts minor versions of Python like
3.9. If the project needs to use a specific Python patch (i.e.:
the Pipfile should contain a
python_full_version field, e.g.:
[requires] python_full_version = "3.10.1"
Python 2 and Python 3 are both completely supported, you can specify the
runtime version in the
runtime.txt file at the root of your repository.
runtime.txt which would install Python 3.7.5:
When the project is using
pipenv and contains a Pipfile and a
Pipfile.lock files, the following command is used to install dependencies:
requirements.txt file is present in your application, the dependencies
will be installed respecting this file with:
pip install -r requirements.txt
We handle most of the common frameworks. Obviously, Django is among them. You need to
configure your application to bind the port defined by the environment variable
Specific Python Buildpack Hooks
You may want to trigger custom actions after a successful deployment. The postdeploy hook is exactly what you need. But your application may require some actions to be executed during the deployment.
The Python buildpack can execute two hooks: before and after the installation of Python and its
dependencies. They must be located in the
bin root folder of your application and be named
More information at https://github.com/Scalingo/python-buildpack.