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 unter die requirements.txt Referenz.

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 in Ihrem Namen installiert, wenn die Funktion erstellt wird, empfehlen wir, zur Klarstellung sei erwähnt, dass Sie es als explizite Abhängigkeit aufnehmen.

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. Dieses Ansatz ist nützlich, wenn Ihre Abhängigkeit nicht über den pip verfügbar ist. Paketmanager oder wenn das Internet Ihrer Cloud Functions-Umgebung Der Zugriff ist eingeschränkt.

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 gebündelt werden, werden unter Cloud Functions aber möglicherweise nicht korrekt ausgeführt.