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-version
  • runtime.txt (python-3.12 convient)
  • requires-python dans pyproject.toml (une plage sélectionne la version publiée compatible la plus récente)

Installation et build

  • poetry.lock : Poetry, poetry install --only main
  • Pipfile.lock : Pipenv, pipenv install --deploy --system
  • requirements.txt : pip install -r requirements.txt
  • pyproject.toml avec [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 (ou app:app si l'app se trouve dans ce fichier)
  • Flask : Gunicorn sur app:app, application:app ou wsgi:app
  • Sinon, python app.py ou python 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.

Offrez un cloud à votre agent.

Jusqu'à 15 € de crédit de bienvenue à l'inscription.

Continuer avec GitHub

ou par e-mail

Restez informé.

Les nouveautés du produit, sans spam. Désabonnez-vous à tout moment.