Obsługa zależności


Zależności dla funkcji Cloud Functions napisanych w Pythonie można określić na 2 sposoby: za pomocą pliku requirements.txt menedżera pakietów pip lub przez spakowanie lokalnych zależności wraz z funkcją.

Specyfikacja zależności przy użyciu standardu Pipfile/Pipfile.lock nie jest obsługiwana. Projekt nie powinien zawierać tych plików.

Określanie zależności za pomocą narzędzia pip

Zależności w Pythonie są zarządzane za pomocą narzędzia pip i wyrażane w pliku metadanych o nazwie requirements.txt. Ten plik musi znajdować się w tym samym katalogu co plik main.py zawierający kod funkcji.

Gdy wdrażasz lub ponownie wdrażasz funkcję, Cloud Functions używa narzędzia pip do pobierania i instalowania najnowszej wersji zależności zadeklarowanych w pliku requirements.txt. Plik requirements.txt zawiera po jednym wierszu na pakiet. Każdy wiersz zawiera nazwę pakietu i opcjonalnie żądaną wersję. Więcej informacji znajdziesz w requirements.txtdokumentacji.

Aby zapobiec wpływowi zmian wersji zależności na kompilację, rozważ przypięcie pakietów zależności do określonej wersji.

Oto przykład pliku requirements.txt:

functions-framework
requests==2.20.0
numpy

Functions Framework to wymagana zależność w przypadku wszystkich funkcji. Chociaż Cloud Functions instaluje go w Twoim imieniu podczas tworzenia funkcji, zalecamy, aby dla jasności uwzględnić go jako wyraźną zależność.

Jeśli Twoja funkcja korzysta z prywatnych zależności, zalecamy skopiowanie functions-framework do prywatnego rejestru. Dodaj do funkcji odzwierciedlony pakiet functions-framework jako zależność, aby uniknąć instalowania pakietu z publicznego internetu.

Pakowanie zależności lokalnych

Możesz też spakować i wdrożyć zależności razem z funkcją. To podejście jest przydatne, jeśli zależności nie są dostępne 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 katalogów:

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

Następnie możesz zaimportować kod w zwykły sposób z 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 można nadal łączyć, ale mogą one nie działać prawidłowo na urządzeniu Cloud Functions.