Python

Wykrywany na podstawie requirements.txt, Pipfile lub pyproject.toml.

Przewodniki wdrożeniowe krok po kroku: Python, Django, Flask, FastAPI, Streamlit.

Na stronie Buildpacksopisano wykrywanie i zasady doboru wersji.

Wykrywanie

requirements.txt, Pipfile lub pyproject.toml w Base directory.

Wersje

Domyślnie używany jest Python 3.13. Linie wydań dostępne we wrześniu 2026: 3.10-3.14. Otrzymasz najnowszą wersję poprawkową wybranej wersji minor.

Przypięcie wersji, w tej kolejności:

  • .python-version
  • runtime.txt (python-3.12 też zadziała)
  • requires-python w pyproject.toml (przy zakresie wybierana jest najwyższa pasująca opublikowana wersja)

Instalacja i build

  • poetry.lock: Poetry, poetry install --only main
  • Pipfile.lock: Pipenv, pipenv install --deploy --system
  • requirements.txt: pip install -r requirements.txt
  • pyproject.toml z [tool.poetry] i bez pliku blokady zależności: Poetry
  • W przeciwnym razie: pip install .

Builder instaluje pip, Poetry i Pipenv w przypiętych wersjach zgodnych ze wszystkimi obsługiwanymi wersjami Pythona. Regularnie je aktualizujemy; build bez cache zapewnia Twojej aplikacji aktualne wersje.

Dla aplikacji Django (manage.py i zależność Django) uruchamiane jest collectstatic --noinput. Błąd na tym etapie trafia do logów i nie przerywa buildu.

Przy uruchomieniu ustawiane jest PYTHONUNBUFFERED=1. Django dostaje też DJANGO_ENV=production oraz, jeśli istnieje plik */wsgi.py, DJANGO_SETTINGS_MODULE.

Polecenie startowe

  • Django: gunicorn <dir>.wsgi --bind 0.0.0.0:$PORT --workers 3
  • FastAPI / Starlette: uvicorn main:app --host 0.0.0.0 --port $PORT (lub app:app, jeśli aplikacja jest w tym pliku)
  • Flask: Gunicorn na app:app, application:app lub wsgi:app
  • W przeciwnym razie python app.py lub python main.py

Dodaj gunicorn lub uvicorn do zależności, jeśli polegasz na tych domyślnych poleceniach. Możesz je nadpisać w Procfile. Twoja aplikacja musi nasłuchiwać na PORT.

Jeśli żaden z tych przypadków nie pasuje, Procfile musi definiować procesy: co najmniej jedną poprawną linię inną niż release:, na przykład web: lub worker:. W przeciwnym razie build kończy się błędem, zamiast serwować katalog aplikacji. Aplikacja z samym workerem (na przykład bot) bez linii web: potrzebuje własnego procesu: w zakładce Processes utwórz proces o takiej samej nazwie jak wpis w Procfile (na przykład worker, bez portu) i ustaw proces web na 0 instancji.

Daj swojemu agentowi chmurę.

Zyskaj do 15 € środków na start przy rejestracji.

Kontynuuj z GitHub

lub przez e-mail

Bądź na bieżąco.

Nowości produktowe, bez spamu. Możesz zrezygnować w każdej chwili.