Obsługa zależności


Zależności dla funkcji w Cloud Functions zapisanych w języku Python można określić na 2 sposoby: możesz użyć pliku requirements.txt menedżera pakietów pip lub spakować lokalne zależności razem z funkcją.

Specyfikacja zależności za pomocą standardu Pipfile/Pipfile.lock nie jest obsługiwana. Twój 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 swoją funkcję, Cloud Functions używa pip do pobrania i zainstalowania najnowszej wersji zależności zgodnie z zadeklarowanymi 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 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

Platforma funkcji jest wymagana w przypadku wszystkich funkcji. Chociaż Cloud Functions instaluje ją w Twoim imieniu podczas tworzenia, zalecamy dodanie jej jako wyraźnej zależności, aby była bardziej zrozumiała.

Jeśli działanie funkcji zależy od zależności prywatnych, zalecamy utworzenie odzwierciedlenia pliku functions-framework w rejestrze prywatnym. Aby uniknąć instalowania pakietu z publicznego internetu, dodaj zduplikowany plik functions-framework jako zależność od swojej funkcji.

Pakowanie zależności lokalnych

Możesz też spakować i wdrażać zależności razem z funkcją. Ta metoda jest przydatna, 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ć struktury katalogów takiej:

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

Następnie możesz w zwykły sposób zaimportować kod z usługi localpackage, korzystając z następującej instrukcji 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 połączyć w pakietach, ale mogą nie działać prawidłowo w Cloud Functions.