Buildpacks unterstützen die sprachspezifische Konfiguration über Umgebungsvariablen.
Python-Version angeben
Standardmäßig verwendet das Python-Laufzeit-Buildpack die aktuellste stabile Version des Python-Interpreters. Wenn Ihre Anwendung eine bestimmte Version erfordert, können Sie eine angeben. Dazu schließen Sie eine .python-version-Datei in das Stammverzeichnis Ihrer Anwendung ein.
3.13
GOOGLE_PYTHON_VERSION verwenden
Es ist auch möglich, die Python-Version über die Umgebungsvariable GOOGLE_PYTHON_VERSION anzugeben.
Wenn beide Konfigurationen festgelegt sind, hat der GOOGLE_PYTHON_VERSION-Wert Vorrang vor der .python-version-Datei. Sind sowohl die .python-version-Datei als auch die Umgebungsvariable GOOGLE_PYTHON_VERSION nicht angegeben, wird standardmäßig die neueste LTS-Version von Python verwendet.
So konfigurieren Sie bei der Bereitstellung Ihrer Anwendung ein Buildpack zur Verwendung von Python 3.13:
pack build sample-python --builder=gcr.io/buildpacks/builder \
--env GOOGLE_PYTHON_VERSION="3.13.x"
Sie können auch den project.toml-Projektdeskriptor verwenden, um die Umgebungsvariable zusammen mit den Projektdateien zu codieren. Weitere Informationen finden Sie unter Anwendung mit Umgebungsvariablen erstellen.
Abhängigkeiten mit pip angeben
Das Python-Buildpack unterstützt die Verwaltung von Anwendungsabhängigkeiten mithilfe von pip. Die Anwendungsabhängigkeiten sollten in einer requirements.txt-Datei im Stammverzeichnis deklariert werden.
Die Datei requirements.txt enthält eine Zeile pro Paket. Jede Zeile enthält den Paketnamen und optional die angeforderte Version. Weitere Informationen finden Sie in der Referenz zu requirements.txt.
Hier sehen Sie eine requirements.txt-Beispieldatei:
requests==2.20.0 numpy
PIP konfigurieren
Es ist möglich, das Verhalten von PIP über Umgebungsvariablen zu konfigurieren:
pack build sample-python --builder=gcr.io/buildpacks/builder \
--env PIP_DEFAULT_TIMEOUT='60'
Private Abhängigkeiten von Artifact Registry
Ein Artifact Registry-Python-Repository kann private Abhängigkeiten für Ihre Python-Funktion hosten. Wenn Sie eine Anwendung in Cloud Build erstellen, generiert das Python-Buildpack automatisch Artifact Registry-Anmeldedaten für das Cloud Build-Dienstkonto.
Sie müssen nur die Artifact Registry-URL in requirements.txt aufnehmen, ohne zusätzliche Anmeldedaten zu generieren. Beispiele:
--extra-index-url REPOSITORY_URL
sampleapp
Flask==0.10.1
google-cloud-storage
Anwendungseinstiegspunkt
Im folgenden Abschnitt wird der Standard-Einstiegspunkt für das Python-Buildpack beschrieben.
Einstiegspunkt für Cloud Run-Quellbereitstellungen
Diese Funktion ist nur verfügbar, wenn Sie Ihren Quellcode mit der Python-Laufzeit in Cloud Run bereitstellen. Diese Funktion ist nicht anwendbar, wenn Sie Ihr Container-Image direkt mit pack build außerhalb des Cloud Run-Quellcode-Bereitstellungsprozesses erstellen.
Das Python-Buildpack unterstützt moderne Webframeworks wie FastAPI, Gradio und Streamlit.
Python-Version 3.12 und früher
Wenn Sie Python-Version 3.12 oder früher verwenden, wird im Python-Buildpack standardmäßig Gunicorn als WSGI-HTTP-Server für Ihre Arbeitslast verwendet. Das Python-Buildpack legt den Standard-Einstiegspunkt auf gunicorn -b :8080 main:app fest.
Python-Version 3.13 und höher
Für Python-Version 3.13 und höher legt das Python-Buildpack den Standard-Einstiegspunkt für Cloud Run-Quellbereitstellungen basierend auf der Webserver- oder Framework-Konfiguration in Ihrer requirements.txt-Datei fest. Diese Standardeinstellung gilt nur für Quellcodebereitstellungen von Cloud Run-Diensten, nicht für Cloud Run-Funktionen.
Wenn Sie einen Cloud Run-Dienst aus dem Quellcode mit der Python-Laufzeit bereitstellen, bestimmt das Buildpack die Python-Version und den Standard-Einstiegspunkt auf folgende Weise:
Wenn Sie in Ihren Quelldateien keine Python-Version angeben, wird vom Python-Buildpack standardmäßig die neueste unterstützte Python-Version festgelegt. Das Buildpack bestimmt den Standard-Einstiegspunkt basierend auf dem Webserver oder Framework, das Sie in Ihrer Datei
requirements.txtkonfiguriert haben.Wenn Sie in Ihrer
requirements.txt-Datei keinen Webserver oder kein Framework angeben, verwendet das Python-Buildpack standardmäßig Gunicorn als WSGI-HTTP-Server für Ihre Arbeitslast. Das Python-Buildpack legt den Standard-Einstiegspunkt aufgunicorn -b :8080 main:appfest.Das Python-Buildpack legt den Standard-Einstiegspunkt basierend auf der folgenden Prioritätsreihenfolge fest, wie in der Datei
requirements.txtdefiniert:gunicornuvicornfastapi[standard]gradiostreamlit
Webserver oder Framework konfigurieren
In der folgenden Tabelle sind für jede gängige Python-Konfiguration in der Datei requirements.txt die Standard-Einstiegspunkte für die Bereitstellung in Cloud Run aus der Quelle aufgeführt:
| Primäre Konfiguration | Standardeinstiegspunkt | Umgebungsvariablen |
|---|---|---|
gunicorn |
gunicorn -b :8080 main:app |
|
numpy |
gunicorn -b :8080 main:app |
|
fastapi uvicorn |
uvicorn main:app --host 0.0.0.0 --port 8080 |
|
fastapi[standard] |
uvicorn main:app --host 0.0.0.0 --port 8080 |
|
uvicorn gunicorn |
gunicorn -b :8080 main:app |
|
gradio |
python main.py |
GRADIO_SERVER_NAME=0.0.0.0 GRADIO_SERVER_PORT=8080 |
streamlit |
streamlit run main.py --server.address 0.0.0.0 --server.port 8080 |
Um Bereitstellungsfehler zu vermeiden, verwenden Sie in Ihren Quelldateien eine unterstützte Python-Version und geben Sie in der Datei requirements.txt einen Webserver an.
Alternativ können Sie den Einstiegspunkt auch mit dem folgenden Befehl für die Quellcodebereitstellung angeben:
gcloud run deploy SERVICE --source . --set-build-env-vars GOOGLE_ENTRYPOINT="ENTRYPOINT"
Ersetzen Sie Folgendes:
- SERVICE: Der Name des Dienstes, für den Sie die Bereitstellung ausführen möchten.
- ENTRYPOINT: Der Standardeinstiegspunkt, den Sie für Ihren Quellcode verwenden möchten.
Wenn Sie Ihren Quellcode nicht in Cloud Run bereitstellen können oder Fehler in den Logs finden, lesen Sie die Anleitung zur Fehlerbehebung in Cloud Run.
Einstiegspunkt für alle anderen Bereitstellungen
Das Python-Buildpack verwendet Gunicorn als Standard-WSGI-HTTP-Server für Ihre Arbeitslast. Anwendungen, die mit dem Python-Buildpack erstellt wurden, starten den gunicorn-Prozess mit Standardeinstellungen, ähnlich wie beim Ausführen:
gunicorn --bind :8080 main:app
Anwendungseinstiegspunkt anpassen
Sie können den Startbefehl der Anwendung mithilfe eines Procfile oder einer Umgebungsvariable anpassen. Möglicherweise müssen Sie dies tun, um die Standardkonfigurationen für Einstiegspunkte anzupassen.
Sie können eine Procfile mit Ihren benutzerdefinierten Einstellungen im Stammverzeichnis erstellen.
Beispiel:
web: gunicorn --bind :$PORT --workers 1 --threads 8 --timeout 0 main:app
Alternativ können Sie die Umgebungsvariable GOOGLE_ENTRYPOINT mit dem Befehl pack verwenden. Beispiel:
pack build sample-python \
--builder gcr.io/buildpacks/builder
--env "GOOGLE_ENTRYPOINT='gunicorn --bind :$PORT main:app'"
Umgebungsvariablen
Das Python-Buildpack unterstützt folgende Umgebungsvariablen, um Ihren Container anzupassen
PIP_<key>
Weitere Informationen finden Sie in der PIP-Dokumentation.
Beispiel: PIP_DEFAULT_TIMEOUT=60 legt --default-timeout=60 für pip-Befehle fest.