Obsługa zależności


Istnieją dwa sposoby określania zależności dla funkcji Cloud Functions napisanych w języku Python: przy użyciu pliku requirements.txt menedżera pakietów pip lub pakując lokalne zależności wraz z funkcją.

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ściami w Pythonie zarządza się za pomocą pip i wyraża je w pliku metadanych o nazwie requirements.txt . Ten plik musi znajdować się w tym samym katalogu, co plik main.py zawierający kod funkcji.

Kiedy wdrażasz lub ponownie wdrażasz swoją funkcję, Cloud Functions używa pip do pobrania i zainstalowania najnowszej wersji zależności zgodnie z deklaracją w pliku requirements.txt . Plik requirements.txt zawiera jeden wiersz na pakiet. Każda linia zawiera nazwę pakietu i opcjonalnie żądaną wersję. Aby uzyskać więcej informacji, zobacz dokumentację pliku requirements.txt .

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

Poniżej znajduje się przykładowy plik requirements.txt :

functions-framework
requests==2.20.0
numpy

Struktura funkcji jest wymaganą zależnością dla wszystkich funkcji. Chociaż Cloud Functions instaluje ją w Twoim imieniu podczas tworzenia funkcji, dla przejrzystości zalecamy dołączenie jej jako jawnej zależności.

Jeśli Twoja funkcja opiera się na zależnościach prywatnych, zalecamy utworzenie kopii lustrzanej functions-framework w rejestrze prywatnym. Dołącz lustrzaną functions-framework jako zależność od swojej funkcji, aby uniknąć instalowania pakietu z publicznego Internetu.

Pakowanie zależności lokalnych

Możesz także pakować i wdrażać zależności wraz ze swoją funkcją. To podejście jest przydatne, jeśli Twoja zależność nie jest dostępna za pośrednictwem menedżera pakietów pip lub jeśli dostęp do Internetu w środowisku Cloud Functions jest ograniczony.

Można na przykład użyć następującej 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 poniższej instrukcji import .

# Code in main.py
from localpackage import script

Pamiętaj, że to podejście nie spowoduje uruchomienia żadnych plików setup.py . Pakiety zawierające te pliki nadal można łączyć w pakiety, ale mogą nie działać poprawnie w Cloud Functions.