Python#

Python is detected if any of the following files are found

  • main.py
  • requirements.txt
  • pyproject.toml
  • Pipfile

Setup#

The following Python versions are available

  • 2.7
  • 3.8
  • 3.9
  • 3.10
  • 3.11 (Default)
  • 3.12

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

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

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

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.