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 za pomocą standardu Pipfile/Pipfile.lock nie jest obsługiwana. Projekt nie powinien zawierać tych plików.
Określanie zależności za pomocą pip
Zależności w Pythonie są zarządzane za pomocą pip i wyrażone w pliku metadanych o nazwie requirements.txt
.
Plik ten musi znajdować się w tym samym katalogu co plik main.py
zawierający kod funkcji.
Podczas wdrażania lub ponownego wdrażania funkcji usługa Cloud Functions używa pip do pobrania i zainstalowania najnowszej wersji zależności zadeklarowanych 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 zmiany wersji zależności nie wpływały na kompilację, rozważ przypięcie pakietów 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 uwzględnienie 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ż spakować i wdrożyć zależności wraz z funkcją. To podejście jest przydatne, jeśli zależność nie jest dostępna za pomocą menedżera 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 w tym przypadku nie będzie można 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.