Umgang mit Abhängigkeiten


Es gibt zwei Möglichkeiten, Abhängigkeiten für Cloud Functions festzulegen, die in Python geschrieben wurden: entweder mithilfe der Datei requirements.txt des Paketmanagers „pip“ oder durch Erstellen eines Pakets, das neben der Funktion auch lokale Abhängigkeiten enthält.

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

Abhängigkeiten mit pip angeben

Abhängigkeiten in Python werden mit pip verwaltet und in einer Metadatendatei mit dem Namenrequirements.txt ausgedrückt. Diese Datei muss sich im selben Verzeichnis wie die Datei main.py befinden, die den Funktionscode enthält.

Wenn Sie Ihre Funktion bereitstellen oder noch einmal bereitstellen, verwendet Cloud Functions pip, um die neueste Version Ihrer Abhängigkeiten herunterzuladen und zu installieren, wie in der Datei requirements.txt angegeben. 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.

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

Das Functions Framework ist eine erforderliche Abhängigkeit für alle Funktionen. Obwohl Cloud Functions sie bei der Erstellung der Funktion für Sie installiert, empfehlen wir, sie zur Klarstellung hinzuzufügen.

Wenn Ihre Funktion private Abhängigkeiten benötigt, sollten Sie functions-framework in Ihre private Registry spiegeln. Fügen Sie die gespiegelte functions-framework als Abhängigkeit zu Ihrer Funktion hinzu, um die Installation des Pakets aus dem öffentlichen Internet zu vermeiden.

Paket mit lokalen Abhängigkeiten erstellen

Sie können auch ein Paket mit der Funktion und ihren Abhängigkeiten erstellen und bereitstellen. Dies ist nützlich, wenn Ihre Abhängigkeit nicht über den pip-Paketmanager verfügbar ist oder der Internetzugriff Ihrer Cloud Functions-Umgebung eingeschränkt ist.

Beispielsweise können Sie eine Verzeichnisstruktur verwenden, die so aussieht:

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

Anschließend können Sie den Code mit der folgenden import-Anweisung wie gewohnt aus localpackage importieren.

# Code in main.py
from localpackage import script

Beachten Sie, dass bei diesem Ansatz keine setup.py-Dateien ausgeführt werden. Pakete mit diesen Dateien können zwar weiterhin gebündelt werden, werden aber in Cloud Functions unter Umständen nicht ordnungsgemäß ausgeführt.