Python
Detetado através de requirements.txt, Pipfile ou pyproject.toml.
Guias de deploy passo a passo: Python, Django, Flask, FastAPI, Streamlit.
Consulte Buildpackspara ver como funcionam a deteção e a política de versões.
Deteção
requirements.txt, Pipfile ou pyproject.toml no Base directory.
Versões
A versão por omissão é o Python 3.13. Linhas publicadas, à data de setembro de 2026: 3.10-3.14. Obtém o patch mais recente da versão minor pedida.
Para fixar a versão, por esta ordem:
.python-versionruntime.txt(python-3.12também serve)requires-pythonempyproject.toml(um intervalo escolhe a versão publicada compatível mais alta)
Instalação e build
poetry.lock: Poetry,poetry install --only mainPipfile.lock: Pipenv,pipenv install --deploy --systemrequirements.txt:pip install -r requirements.txtpyproject.tomlcom[tool.poetry]e sem lockfile: Poetry- Caso contrário:
pip install .
O builder instala o pip, o Poetry e o Pipenv em versões fixas que funcionam em todas as versões de Python suportadas. A Nodion atualiza-as regularmente; num deploy sem cache, a aplicação recebe as versões atuais.
As aplicações Django (manage.py e uma dependência Django) executam collectstatic --noinput. Uma falha nesse passo fica registada nos logs e não faz falhar o build.
No arranque, é definido PYTHONUNBUFFERED=1. O Django recebe também DJANGO_ENV=production e, quando existe um ficheiro */wsgi.py, DJANGO_SETTINGS_MODULE.
Comando de arranque
- Django:
gunicorn <dir>.wsgi --bind 0.0.0.0:$PORT --workers 3 - FastAPI / Starlette:
uvicorn main:app --host 0.0.0.0 --port $PORT(ouapp:appse a aplicação estiver nesse ficheiro) - Flask: Gunicorn em
app:app,application:appouwsgi:app - Caso contrário,
python app.pyoupython main.py
Inclua gunicorn ou uvicorn nas suas dependências se depender destes comandos por omissão. Pode substituí-los por um Procfile. A aplicação deve escutar em PORT.
Se nenhum destes casos se aplicar, o Procfile tem de definir os processos: pelo menos uma linha válida diferente de release:, por exemplo web: ou worker:. Caso contrário, o build falha com um erro em vez de servir o diretório da aplicação. Uma aplicação que só tenha um worker (um bot, por exemplo) e não tenha uma linha web: precisa de um processo próprio: no separador Processes, crie um processo com o mesmo nome da entrada do Procfile (por exemplo worker, sem porta) e defina o processo web para 0 instâncias.