Obsługa zależności


Istnieją 2 sposoby określania zależności w przypadku funkcji Cloud Functions napisanej w Pythonie: za pomocą pliku requirements.txt menedżera pakietów pip lub zapakowania lokalnych zależności wraz z funkcją.

Specyfikacja zależności korzystająca ze standardu Pipfile/Pipfile.lock nie jest obsługiwana. Projekt nie powinien zawierać tych plików.

Określanie zależności za pomocą pip

Zarządzanie zależnościami w Pythonie jest zarządzane za pomocą pipa i wyrażane w pliku metadanych o nazwie requirements.txt. Ten plik musi znajdować się w tym samym katalogu co plik main.py, który zawiera kod funkcji.

Gdy wdrażasz lub ponownie wdrażasz funkcję, Cloud Functions używa pip do pobrania i zainstalowania najnowszej wersji zależności zgodnie z zadeklarowaną w pliku requirements.txt. Plik requirements.txt zawiera po 1 wierszu na pakiet. Każdy wiersz zawiera nazwę pakietu i opcjonalnie żądaną wersję. Więcej informacji znajdziesz w dokumentacji requirements.txt.

Aby zapobiec wpływowi zmian wersji zależności na kompilację, możesz przypiąć pakiety zależności do określonej wersji.

Oto przykładowy plik requirements.txt:

functions-framework
requests==2.20.0
numpy

Framework funkcji to wymagana zależność we wszystkich funkcjach. Chociaż funkcja Cloud Functions instaluje ją w Twoim imieniu podczas tworzenia funkcji, ze względu na przejrzystość zalecamy dodanie jej jako jawnej zależności.

Jeśli funkcja opiera się na prywatnych zależnościach, zalecamy skopiowanie functions-framework do prywatnego rejestru. Dodaj zwierciadło functions-framework jako zależność funkcji, aby uniknąć instalowania pakietu z publicznego internetu.

Pakowanie zależności lokalnych

Możesz też tworzyć pakiety i wdrażać zależności wraz z funkcją. To podejście jest przydatne, jeśli zależność nie jest dostępna w menedżerze pakietów pip lub jeśli dostęp do internetu w środowisku Cloud Functions jest ograniczony.

Możesz na przykład użyć takiej struktury katalogu:

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

Następnie możesz zaimportować kod jak zwykle z poziomu localpackage, używając tego polecenia import.

# Code in main.py
from localpackage import script

Pamiętaj, że ta metoda nie uruchomi żadnych plików setup.py. Pakiety z tymi plikami nadal można łączyć, ale mogą one nie działać prawidłowo na urządzeniu Cloud Functions.