This is the official Scalingo buildpack for Python apps, powered by Pipenv, pip and other excellent software.
Recommended web frameworks include Django and Flask, among others. The
recommended webserver is Gunicorn. There are no restrictions around what
software can be used (as long as it's pip-installable). Web processes must bind
to $PORT, and only the HTTP protocol is permitted for incoming connections.
Python packages with C dependencies that are not available on the base image
are generally not supported, unless manylinux wheels are provided by the
package maintainers (common).
A requirements.txt, Pipfile.lock, poetry.lock, or uv.lock file must be
present in the root (top-level) directory of your app's source code.
When using the package manager uv a
.python-version file is also required.
We recommend that you specify a Python version for your app rather than relying on the buildpack's default Python version.
For example, to request the latest patch release of Python 3.13, create a
.python-version file in the root directory of your app containing: 3.13
We strongly recommend that you use the major version form instead of pinning to an exact version, since it will allow your app to receive Python security updates.
The buildpack will look for a Python version in the following places (in descending order of precedence):
runtime.txtfile (deprecated).python-versionfile (recommended)- The
python_full_versionfield in thePipfile.lockfile - The
python_versionfield in thePipfile.lockfile
If none of those are found, the buildpack will use a default Python version for the first build of an app, and then subsequent builds of that app will be pinned to that version unless the build cache is cleared or you request a different version.
The current default Python version is: 3.13
The supported Python versions are:
- Python
3.14 - Python
3.13 - Python
3.12 - Python
3.11 - Python
3.10
These Python versions are deprecated on Scalingo:
- Python
3.9 - Python
3.8(only available on the scalingo-20 stack)
Python versions older than those listed above are no longer supported, since they have reached end-of-life upstream.
For more information about using Python on Scalingo, see our documentation.