Umgang mit Abhängigkeiten


Es gibt zwei Möglichkeiten, Abhängigkeiten für in Python geschriebene Cloud-Funktionen anzugeben: Verwenden Sie die Datei requirements.txt des Pip- Paketmanagers oder packen Sie lokale Abhängigkeiten zusammen mit Ihrer Funktion.

Die Abhängigkeitsspezifikation mithilfe des Pipfile/Pipfile.lock-Standards wird nicht unterstützt. Ihr Projekt sollte diese Dateien nicht enthalten.

Abhängigkeiten mit pip angeben

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

Wenn Sie Ihre Funktion bereitstellen oder erneut bereitstellen, verwendet Cloud Functions pip, um die neueste Version Ihrer Abhängigkeiten herunterzuladen und zu installieren, wie in der Datei requirements.txt deklariert. Die Datei requirements.txt enthält eine Zeile pro Paket. Jede Zeile enthält den Paketnamen und optional die angeforderte Version. Weitere Einzelheiten finden Sie in der requirements.txt Referenz .

Um zu verhindern, dass Ihr Build durch Änderungen der Abhängigkeitsversion beeinträchtigt wird, sollten Sie erwägen, Ihre Abhängigkeitspakete an eine bestimmte Version anzuheften.

Das Folgende ist eine Beispieldatei requirements.txt :

functions-framework
requests==2.20.0
numpy

Das Functions Framework ist eine erforderliche Abhängigkeit für alle Funktionen. Obwohl Cloud Functions es in Ihrem Namen installiert, wenn die Funktion erstellt wird, empfehlen wir Ihnen, es aus Gründen der Übersichtlichkeit als explizite Abhängigkeit einzubeziehen.

Wenn Ihre Funktion auf privaten Abhängigkeiten basiert, empfehlen wir Ihnen, functions-framework in Ihre private Registrierung zu spiegeln. Fügen Sie das gespiegelte functions-framework als Abhängigkeit zu Ihrer Funktion hinzu, um die Installation des Pakets aus dem öffentlichen Internet zu vermeiden.

Lokale Abhängigkeiten packen

Sie können neben Ihrer Funktion auch Abhängigkeiten packen und bereitstellen. Dieser Ansatz ist nützlich, wenn Ihre Abhängigkeit nicht über den Pip-Paketmanager verfügbar ist oder der Internetzugang Ihrer Cloud Functions-Umgebung eingeschränkt ist.

Sie könnten beispielsweise eine Verzeichnisstruktur wie die folgende verwenden:

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

Anschließend können Sie den Code wie gewohnt mit der folgenden import 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 weiterhin gebündelt werden, werden jedoch möglicherweise nicht ordnungsgemäß auf Cloud Functions ausgeführt.