Abhängigkeiten in Python angeben

Geben Sie die Anwendungsabhängigkeiten für unterstützte Python-Versionen mit einer der folgenden Methoden an:

  • Verwenden Sie eine requirements.txt-Datei im Stammverzeichnis. Diese Datei muss sich im selben Verzeichnis wie die main.py-Datei befinden, die den Quellcode enthält. Die requirements.txt-Datei enthält eine Zeile pro Paket. Jede Zeile enthält den Paketnamen und optional die angeforderte Version. Es empfiehlt sich, Ihre Abhängigkeitspakete an eine bestimmte Version anzuheften, um zu verhindern, dass Ihr Build von Änderungen an der Abhängigkeitsversion beeinträchtigt wird.

    Hier sehen Sie eine requirements.txt-Beispieldatei:

    functions-framework
    requests==2.20.0
    numpy
    
  • Verwenden Sie eine pyproject.toml-Datei, um Abhängigkeiten anzugeben. Wenn Sie die Anwendungsabhängigkeiten in einer pyproject.toml-Datei anstelle der requirements.txt-Datei verwalten, bestimmt das Python-Buildpack den Paketmanager anhand der Konfiguration, die Sie in der pyproject.toml-Datei angeben. Weitere Informationen finden Sie unter Python-Anwendungen bereitstellen mit einer pyproject.toml Datei.

    Wenn Ihre Anwendung sowohl die pyproject.toml-Datei als auch die requirements.txt-Datei verwendet, hat die requirements.txt-Datei Vorrang.

    • Hier sehen Sie eine pyproject.toml-Beispieldatei:

      [project]
      name = "demo-app"
      version = "0.1.0"
      description = ""
      requires-python = ">=3.10"
      dependencies = [
          "flask>=3.1.1",
          "gunicorn>=23.0.0",
      ]
      
      [build-system]
      requires = ["setuptools>=61.0"]
      build-backend = "setuptools.build_meta"
      
  • Paket mit lokalen Abhängigkeiten zusammen mit der Funktion erstellen.

    Die Abhängigkeitsspezifikation mit dem Standard Pipfile/Pipfile.lock wird nicht unterstützt. Das Projekt sollte diese Dateien nicht enthalten.

    Wenn Sie eine requirements.txt-Datei zum Verwalten von Abhängigkeiten verwenden, installiert Cloud Run das Functions Framework für Sie, wenn Sie eine Funktion erstellen. Wir empfehlen jedoch, das Functions Framework als explizite Abhängigkeit anzugeben, um Abweichungen zu vermeiden.

    Wenn Sie eine pyproject.toml-Datei verwenden, müssen Sie das Functions Framework als Abhängigkeit angeben, da Cloud Run es nicht für Sie installiert.

Paketmanager

Wenn Sie Ihre Abhängigkeiten mit einer requirements.txt file verwalten, variiert der Standardpaket manager je nach der konfigurierten Python-Version.

Wenn Sie eine pyproject.toml-Datei anstelle einer requirements.txt-Datei zum Verwalten von Abhängigkeiten verwenden, bestimmt das Python-Buildpack den Paketmanager anhand der Konfigurationseinstellungen in der pyproject.toml-Datei. Das Buildpack unterstützt die Paketmanager pip, uv und Poetry. Weitere Informationen finden Sie unter Python-Anwendungen mit einer pyproject.toml Datei.

Python 3.14 und höher

Ab Python Version 3.14 verwendet das Python Buildpack den uv Paketmanager als Standardinstallationsprogramm für die Abhängigkeiten, die Sie in der requirements.txt Datei angeben.

Wenn Sie pip als Paketmanager verwenden möchten, konfigurieren Sie die Umgebungsvariable GOOGLE_PYTHON_PACKAGE_MANAGER="pip".

Führen Sie den Befehl gcloud run deploy aus, um die Umgebungsvariable des Paketmanagers auf pip zu setzen:

gcloud run deploy SERVICE --source . \
  --set-build-env-vars=GOOGLE_PYTHON_PACKAGE_MANAGER=pip

Ersetzen Sie SERVICE durch den Namen Ihres Cloud Run-Dienstes.

Python 3.13 und früher

Für Python Version 3.13 und früher verwendet das Python Buildpack den pip Paketmanager, um die in der requirements.txt Datei definierten Abhängigkeiten zu installieren.

Wenn Sie uv als Paketmanager verwenden möchten, konfigurieren Sie die Umgebungsvariable GOOGLE_PYTHON_PACKAGE_MANAGER="uv".

Führen Sie den Befehl gcloud run deploy aus, um die Umgebungsvariable des Paketmanagers auf uv zu setzen:

gcloud run deploy SERVICE --source . \
  --set-build-env-vars=GOOGLE_PYTHON_PACKAGE_MANAGER=uv

Ersetzen Sie SERVICE durch den Namen Ihres Cloud Run-Dienstes.

Paket mit lokalen Abhängigkeiten erstellen

Paket mit der Funktion und ihren Abhängigkeiten erstellen und bereitstellen. Dies ist nützlich, wenn Ihre Abhängigkeit nicht verfügbar ist, wenn Sie einen unterstützten Paketmanager verwenden, oder wenn der Internetzugriff Ihrer Cloud Run-Umgebung eingeschränkt ist.

Sie können auch die Datei requirements.txt verwenden, um zusätzliche Abhängigkeiten anzugeben, die sich nicht im Paket mit der Funktion befinden. Beispielsweise können Sie die folgende Verzeichnisstruktur verwenden:

myfunction/
├── main.py
└── localpackage/
    ├── __init__.py
    └── script.py

Importieren Sie den Code aus localpackage mit der folgenden import-Anweisung:

# code in main.py
from localpackage import script

Bei dieser Methode werden keine setup.py-Dateien ausgeführt. Sie können die Pakete mit diesen Dateien bündeln, aber das Paket wird in Cloud Run Functions möglicherweise nicht ordnungsgemäß ausgeführt.

Kopierte Abhängigkeiten

Kopierte Abhängigkeiten sind Abhängigkeiten, deren Quelle direkt in Ihrem Quellcodepaket enthalten und zusammen mit Ihrem eigenen Code neu erstellt wird. Verwenden Sie die GOOGLE_VENDOR_PIP_DEPENDENCIES Build-Umgebungsvariable, um kopierte pip-Abhängigkeiten zu erstellen und deren Installation während der Bereitstellung zu vermeiden.

Kopierte Abhängigkeiten erstellen

  1. Stellen Sie sicher, dass python3 auf Ihrem Entwicklungssystem installiert ist.

  2. Deklarieren Sie die Anwendungsabhängigkeiten in einer requirements.txt-Datei im Stammverzeichnis Ihrer Entwicklungsstruktur.

  3. Deklarieren Sie Functions Framework als Anforderung, indem Sie functions-framework in eine separate Zeile in Ihre requirements.txt-Datei aufnehmen.

  4. Laden Sie die Abhängigkeiten Ihrer Funktion in das lokale Verzeichnis herunter. Die dafür erforderlichen Schritte hängen davon ab, ob die Abhängigkeit eine Python-Rad-Datei (*.whl) oder eine TAR-Datei (*.tar.gz) ist.

    1. Wenn die Abhängigkeit ein Python-Rad (*.whl) ist, laden Sie sie mit diesem pip-Befehl in das Stammverzeichnis Ihres Entwicklungsbaums herunter:

      python3 -m pip download -r requirements.txt --only-binary=:all: \
         -d DIRECTORY \
         --python-version PYTHON_RUNTIME_VERSION \
         --platform manylinux2014_x86_64 \
         --implementation cp
      

      Ersetzen Sie Folgendes:

      • DIRECTORY: der Name des lokalen Verzeichnisses, in das heruntergeladen werden soll.
      • PYTHON_RUNTIME_VERSION: die Python-Version, die für Kompatibilitätsprüfungen verwendet werden soll. Beispiel: 314 für Python 3.14.
        Diese Version muss mit einer der unterstützten Python-Laufzeiten übereinstimmen.

      Die resultierende Verzeichnisstruktur sollte so aussehen:

      myfunction/
      ├── main.py
      └── requirements.txt
      └── DIRECTORY
         ├── dependency1.whl
         └── dependency2.whl
      

    2. Wenn die Abhängigkeit eine TAR-Datei (*.tar.gz) ist:

      1. Wenn die Abhängigkeit in Python geschrieben ist, laden Sie sie von pip herunter:

        python3 -m pip download -r requirements.txt \
           -d DIRECTORY
        
      2. Wenn eine Abhängigkeit aus Code besteht, der in C oder C++ geschrieben ist, laden Sie den Code herunter und kompilieren Sie ihn separat.

  5. Stellen Sie die Funktion und die zugehörigen kopierten Abhängigkeiten bereit:

    gcloud functions deploy FUNCTION_NAME \
      --runtime PYTHON_RUNTIME_NAME \
      --set-build-env-vars GOOGLE_VENDOR_PIP_DEPENDENCIES=DIRECTORY
    

    Ersetzen Sie Folgendes:

    • FUNCTION_NAME: der Name der Funktion, die Sie bereitstellen.
    • PYTHON_RUNTIME_NAME: der Name einer der unterstützten Python-Laufzeiten , unter der die bereitgestellte Funktion ausgeführt wird, z. B. python311. Dies muss dieselbe Python-Laufzeitversion sein, die Sie in Ihrer lokalen Entwicklungsumgebung verwendet haben.
    • DIRECTORY: der Name des Verzeichnisses, das Ihre kopierten Abhängigkeiten enthält.

Weitere Informationen zur Verwendung von Buildpacks finden Sie unter Funktion mit Buildpacks erstellen.

Private Abhängigkeiten verwenden

Sie können private Abhängigkeiten aus Artifact Registry oder aus anderen Repositories verwenden.

Private Abhängigkeiten von Artifact Registry

Ein Artifact Registry-Python -Repository hostet private Abhängigkeiten für Ihre Python-Funktion. Bei der Bereitstellung in Cloud Run, generiert der Build-Prozess automatisch Artifact Registry-Anmeldedaten für das Cloud Build-Dienstkonto. Fügen Sie die Artifact Registry-URL in Ihre requirements.txt-Datei ein, ohne zusätzliche Anmeldedaten zu generieren. Beispiel:

--index-url REPOSITORY_URL
sampleapp
Flask==0.10.1
google-cloud-storage

Wenn Ihr Build mehrere Repositories benötigt, können Sie mit einem virtuellen Artifact Registry-Repository die Reihenfolge, in der pip Ihre Repositories durchsucht, sicher steuern.

Private Abhängigkeiten aus anderen Repositories

Buildpacks installiert Abhängigkeiten in einer Cloud Build-Umgebung, die keinen Zugriff auf SSH-Schlüssel bietet. Kopieren Sie die Pakete, die Sie in Repositories hosten, für die eine SSH-basierte Authentifizierung erforderlich ist, und laden Sie die Pakete mit dem Code Ihres Projekts hoch.

Verwenden Sie den Befehl pip install mit dem -t DIRECTORY Flag, um private Abhängigkeiten vor der Bereitstellung Ihrer Anwendung in ein lokales Verzeichnis zu kopieren:

  1. Kopieren Sie Ihre Abhängigkeit in ein lokales Verzeichnis:
    pip install -t DIRECTORY DEPENDENCY
  2. Fügen Sie dem Verzeichnis DIRECTORY eine leere Datei __init__.py hinzu, um es in ein Modul zu verwandeln.
  3. Führen Sie einen Import aus diesem Modul durch, um Ihre Abhängigkeit zu verwenden:
    import DIRECTORY.DEPENDENCY

Vorinstallierte Pakete

Das Python-Buildpack installiert die folgenden Python-Pakete, wenn Sie Ihre Funktion bereitstellen. Wenn Sie eines dieser Pakete in Ihrem Funktionscode verwenden, fügen Sie die folgenden Versionen in Ihre requirements.txt-Datei ein:

Um Probleme mit Versionsupdates von Abhängigkeiten zu vermeiden, pinnen Sie das Paket an eine bestimmte Version an.

anyio==4.5.2
blinker==1.8.2
click==8.1.8
cloudevents==1.11.0
deprecation==2.1.0
exceptiongroup==1.3.0
Flask==3.0.3
functions-framework==3.10.2
gunicorn==23.0.0
h11==0.16.0
idna==3.15
importlib_metadata==8.5.0
itsdangerous==2.2.0
Jinja2==3.1.6
MarkupSafe==2.1.5
packaging==25.0
sniffio==1.3.1
# Install starlette 0.44.0 for Python 3.8
starlette==0.44.0; python_version == '3.8'
# Install starlette 0.49.1 for Python 3.9
starlette==0.49.1; python_version == '3.9'
# Install starlette 1.0.1 for Python 3.10+
starlette==1.3.1; python_version >= '3.10'
typing_extensions==4.13.2
uvicorn==0.33.0
uvicorn-worker==0.2.0
watchdog==4.0.2
Werkzeug==3.0.6
zipp==3.20.2

Das Python-Buildpack installiert die folgenden Pakete, die an eine bestimmte Version angeheftet sind:

  • pip (neueste Version)
  • setuptools (neueste Version)
  • wheel (wird durch die Produktanforderungen bestimmt)

Die Python-Laufzeit enthält auch eine Reihe von System paketen in der Ausführungsumgebung.