Obsługa zależności


Istnieją 2 sposoby określania zależności dla funkcji w Cloud Functions napisane w języku Python: użycie pliku requirements.txt menedżera pakietów pip lub utworzenie pakietu lokalnych zależności obok Twojej funkcji.

Specyfikacja zależności wykorzystująca standard Pipfile/Pipfile.lock nie jest obsługiwana. Twój 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 musi się znajdować 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 podanej 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ę, rozważ przypięcie pakietów zależności do konkretnej wersji.

Oto przykładowy plik requirements.txt:

functions-framework
requests==2.20.0
numpy

Platforma funkcji jest wymagana przez wszystkie funkcje. Choć Cloud Functions instaluje ją w Twoim imieniu podczas jej tworzenia, zalecamy użycie jej jako wyraźnej zależności, aby zwiększyć przejrzystość.

Jeśli Twoja funkcja zależy od prywatnych zależności, zalecamy zdublowanie functions-framework w rejestrze prywatnym. Dodaj powielany functions-framework jako zależność od swojej funkcji, aby uniknąć instalowania pakietu z publicznego internetu.

Zależności lokalne dotyczące pakietów

Możesz też tworzyć pakiety i wdrażać zależności razem z funkcją. Ta metoda jest przydatna, gdy zależność nie jest dostępna w menedżerze pakietów pip lub jeśli dostęp do internetu w Twoim ś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 w normalny sposób zaimportować kod z witryny localpackage, używając tej instrukcji import.

# Code in main.py
from localpackage import script

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