Python
Rilevato da requirements.txt, Pipfile o pyproject.toml.
Guide passo passo al deploy: Python, Django, Flask, FastAPI, Streamlit.
Vedi Buildpackper come funzionano il rilevamento e la politica delle versioni.
Rilevamento
requirements.txt, Pipfile o pyproject.toml nella base directory.
Versioni
La versione predefinita è Python 3.13. Versioni pubblicate (dati aggiornati a settembre 2026): 3.10-3.14. Ricevi l'ultima patch della versione minor richiesta.
Per fissare la versione, in quest'ordine:
.python-versionruntime.txt(va bene anchepython-3.12)requires-pythoninpyproject.toml(un range sceglie la versione pubblicata più alta compatibile)
Installazione e build
poetry.lock: Poetry,poetry install --only mainPipfile.lock: Pipenv,pipenv install --deploy --systemrequirements.txt:pip install -r requirements.txtpyproject.tomlcon[tool.poetry]e senza lockfile: Poetry- Altrimenti:
pip install .
Il builder installa pip, Poetry e Pipenv in versioni bloccate che funzionano su tutte le versioni di Python supportate. Le aggiorniamo regolarmente; con un deploy senza cache la tua app riceve le versioni aggiornate.
Le app Django (manage.py più una dipendenza Django) eseguono collectstatic --noinput. Un errore in questo passaggio finisce nei log e non fa fallire la build.
All'avvio viene impostato PYTHONUNBUFFERED=1. Django riceve anche DJANGO_ENV=production e, se esiste un file */wsgi.py, DJANGO_SETTINGS_MODULE.
Comando di avvio
- Django:
gunicorn <dir>.wsgi --bind 0.0.0.0:$PORT --workers 3 - FastAPI / Starlette:
uvicorn main:app --host 0.0.0.0 --port $PORT(oppureapp:appse l'app si trova in quel file) - Flask: Gunicorn su
app:app,application:appowsgi:app - Altrimenti
python app.pyopython main.py
Aggiungi gunicorn o uvicorn alle dipendenze se ti affidi a questi comandi predefiniti. Puoi sovrascrivere il comando con un Procfile. Metti l'app in ascolto su PORT.
Se non si applica nessuno di questi casi, i processi vanno definiti nel Procfile: almeno una riga valida diversa da release:, per esempio web: o worker:. Altrimenti la build fallisce con un errore invece di servire la directory dell'app. Un'app solo worker (per esempio un bot) senza una riga web: richiede un processo dedicato: nella scheda Processes crea un processo con lo stesso nome della voce nel Procfile (per esempio worker, senza porta) e imposta il processo web a 0 istanze.