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-versionruntime.txt(python-3.12też zadziała)requires-pythonwpyproject.toml(przy zakresie wybierana jest najwyższa pasująca opublikowana wersja)
Instalacja i build
poetry.lock: Poetry,poetry install --only mainPipfile.lock: Pipenv,pipenv install --deploy --systemrequirements.txt:pip install -r requirements.txtpyproject.tomlz[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(lubapp:app, jeśli aplikacja jest w tym pliku) - Flask: Gunicorn na
app:app,application:applubwsgi:app - W przeciwnym razie
python app.pylubpython 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.