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.