Há duas maneiras de especificar dependências para Cloud Functions escritas em Python: usando o arquivo requirements.txt
do gerenciador de pacotes pip ou empacotando dependências locais junto com sua função.
A especificação de dependência usando o padrão Pipfile/Pipfile.lock não é suportada. Seu projeto não deve incluir esses arquivos.
Especificando dependências com pip
As dependências em Python são gerenciadas com pip e expressas em um arquivo de metadados chamado requirements.txt
. Este arquivo deve estar no mesmo diretório que o arquivo main.py
que contém seu código de função.
Quando você implanta ou reimplanta sua função, o Cloud Functions usa pip para fazer download e instalar a versão mais recente de suas dependências, conforme declarado no arquivo requirements.txt
. O arquivo requirements.txt
contém uma linha por pacote. Cada linha contém o nome do pacote e, opcionalmente, a versão solicitada. Para obter mais detalhes, consulte a referência requirements.txt
.
Para evitar que sua compilação seja afetada por alterações de versão de dependência, considere fixar seus pacotes de dependência em uma versão específica.
A seguir está um exemplo de arquivo requirements.txt
:
functions-framework requests==2.20.0 numpy
O Functions Framework é uma dependência necessária para todas as funções. Embora o Cloud Functions o instale em seu nome quando a função é criada, recomendamos incluí-lo como uma dependência explícita para maior clareza.
Se a sua função depende de dependências privadas, recomendamos que você espelhe functions-framework
no seu registro privado. Inclua a functions-framework
espelhada como uma dependência da sua função para evitar a instalação do pacote da Internet pública.
Empacotando dependências locais
Você também pode empacotar e implantar dependências junto com sua função. Essa abordagem será útil se sua dependência não estiver disponível por meio do gerenciador de pacotes pip ou se o acesso à Internet do ambiente do Cloud Functions for restrito.
Por exemplo, você pode usar uma estrutura de diretórios como a seguinte:
myfunction/ ├── main.py └── localpackage/ ├── __init__.py └── script.py
Você pode então importar o código normalmente de localpackage
usando a seguinte instrução import
.
# Code in main.py from localpackage import script
Observe que esta abordagem não executará nenhum arquivo setup.py
. Os pacotes com esses arquivos ainda podem ser agrupados, mas podem não ser executados corretamente no Cloud Functions.