Há duas maneiras de especificar dependências para o Cloud Functions criadas em
Python: usando o arquivo requirements.txt
do gerenciador de pacotes pip
ou usando o empacotamento de dependências locais com a função.
A especificação de dependência que usa o padrão Pipfile/Pipfile.lock não é compatível. Seu projeto não deve incluir esses arquivos.
Como especificar dependências com pip
Dependências no Python são gerenciadas com pip e expressas em um arquivo de metadados chamado requirements.txt
.
O arquivo precisa estar no mesmo diretório que o arquivo main.py
que contém o código da função.
Quando você implanta ou reimplanta a função, o Cloud Functions
usa o pip para fazer o download e instalar a versão mais recente das
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, como opção, a versão solicitada. Para mais detalhes, consulte a referência do requirements.txt
.
Para evitar que seu build seja afetado por mudanças na versão de dependência, fixe os pacotes de dependência em uma versão específica.
A seguir, 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 para você quando a função é criada, recomendamos incluí-lo como uma dependência explícita para maior clareza.
Se a
função depende de dependências particulares, recomendamos que você
espelhe functions-framework
no registro particular. Inclua o functions-framework
espelhado como uma dependência da sua função para evitar a instalação do
pacote pela Internet pública.
Como empacotar dependências locais
Também é possível empacotar e implantar dependências junto com sua função. Essa abordagem é útil quando a dependência não está disponível por meio do gerenciador de pacotes pip ou o acesso à Internet do ambiente do Cloud Functions é restrito.
Por exemplo, é possível usar uma estrutura de diretório como a seguinte:
myfunction/ ├── main.py └── localpackage/ ├── __init__.py └── script.py
Você pode importar o código normalmente de localpackage
usando a seguinte instrução import
.
# Code in main.py from localpackage import script
Observe que essa 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.