Python
Détecté via requirements.txt, Pipfile ou pyproject.toml.
Guides de déploiement pas à pas : Python, Django, Flask, FastAPI, Streamlit.
Consultez Buildpackspour comprendre la détection et la politique de versions.
Détection
requirements.txt, Pipfile ou pyproject.toml dans le Base directory.
Versions
Par défaut, Python 3.13. Branches disponibles en septembre 2026 : 3.10-3.14. Vous obtenez le dernier correctif de la version mineure demandée.
Pour fixer la version, dans cet ordre :
.python-versionruntime.txt(python-3.12convient)requires-pythondanspyproject.toml(une plage sélectionne la version publiée compatible la plus récente)
Installation et build
poetry.lock: Poetry,poetry install --only mainPipfile.lock: Pipenv,pipenv install --deploy --systemrequirements.txt:pip install -r requirements.txtpyproject.tomlavec[tool.poetry]et sans lockfile : Poetry- Sinon :
pip install .
Le builder installe des versions fixées de pip, Poetry et Pipenv, compatibles avec toutes les versions de Python prises en charge. Nous les mettons à jour régulièrement ; un déploiement sans cache utilise leurs versions actuelles.
Les apps Django (manage.py plus une dépendance Django) exécutent collectstatic --noinput. Un échec à cette étape est consigné dans les logs et ne fait pas échouer le build.
Au lancement, PYTHONUNBUFFERED=1 est défini. Django reçoit aussi DJANGO_ENV=production et, si un fichier */wsgi.py existe, DJANGO_SETTINGS_MODULE.
Commande de démarrage
- 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:appsi l'app se trouve dans ce fichier) - Flask : Gunicorn sur
app:app,application:appouwsgi:app - Sinon,
python app.pyoupython main.py
Ajoutez gunicorn ou uvicorn à vos dépendances si vous comptez sur ces commandes par défaut. Un Procfile permet de les remplacer. Votre app doit écouter sur PORT.
Si aucun de ces cas ne s'applique, le Procfile doit définir les processus : au moins une ligne valide autre que release:, par exemple web: ou worker:. Sinon, le build échoue au lieu de servir le répertoire de l'app. Une app qui ne comporte qu'un worker (un bot, par exemple) et aucune ligne web: a besoin d'un processus dédié : dans l'onglet Processes, créez un processus portant le même nom que l'entrée du Procfile (par exemple worker, sans port) et réglez le processus web sur 0 instance.