Python#
Python is detected if any of the following files are found
main.py
requirements.txt
pyproject.toml
Pipfile
A venv is created at /opt/venv
and PATH
is modified to use the venv python binary.
Setup#
The following Python versions are available
2.7
3.8
3.9
3.10
3.11
(Default)3.12
3.13
The version can be overridden by
- Setting the
NIXPACKS_PYTHON_VERSION
environment variable - Setting the version in a
.python-version
file - Setting the version in a
runtime.txt
file - Setting the version in a
.tool-versions
file
You also specify the exact poetry, pdm, and uv versions:
- The
NIXPACKS_POETRY_VERSION
environment variable orpoetry
in a.tool-versions
file - The
NIXPACKS_PDM_VERSION
environment variable - The
NIXPACKS_UV_VERSION
environment variable oruv
in a.tool-versions
file
Install#
If requirements.txt
pip install -r requirements.txt
If pyproject.toml
pip install --upgrade build setuptools && pip install .
If pyproject.toml
(w/ poetry.lock
)
poetry install --no-dev --no-interactive --no-ansi
If pyproject.toml
(w/ pdm.lock
)
pdm install --prod
If Pipfile
(w/ Pipfile.lock
)
PIPENV_VENV_IN_PROJECT=1 pipenv install --deploy
if uv.lock
:
uv sync --no-dev --frozen
Start#
if Django Application
python manage.py migrate && gunicorn {app_name}.wsgi
if pyproject.toml
python -m {module}
Otherwise
python main.py
Caching#
These directories are cached between builds
- Install:
~/.cache/pip
- Install:
~/.cache/uv
- Install:
~/.cache/pdm
Environment Variables#
The following environment variables are set by default:
PYTHONFAULTHANDLER=1 PYTHONUNBUFFERED=1 PYTHONHASHSEED=random PYTHONDONTWRITEBYTECODE=1 PIP_NO_CACHE_DIR=1 PIP_DISABLE_PIP_VERSION_CHECK=1 PIP_DEFAULT_TIMEOUT=100
These can be overwritten by the --env
option.