Os buildpacks suportam a configuração idiomática da linguagem através de variáveis de ambiente.
Especifique a versão do Python
Por predefinição, o buildpack do Python Runtime usa a versão estável mais recente do intérprete Python. Se a sua aplicação exigir uma versão específica, pode especificar uma incluindo um ficheiro .python-version
no diretório raiz da aplicação.
3.13
Usar GOOGLE_PYTHON_VERSION
Também é possível especificar a versão do Python através da variável de ambiente GOOGLE_PYTHON_VERSION
.
Se ambas as configurações estiverem definidas, o valor GOOGLE_PYTHON_VERSION
tem
prioridade sobre o ficheiro .python-version
. Por predefinição, quando o ficheiro .python-version
e a variável de ambiente GOOGLE_PYTHON_VERSION
não são especificados, é usada a versão LTS mais recente do Python.
Para configurar o buildpack para usar o Python 3.13 quando implementar a sua app:
pack build sample-python --builder=gcr.io/buildpacks/builder \
--env GOOGLE_PYTHON_VERSION="3.13.x"
Também pode usar um descritor de projeto project.toml
para codificar a variável de ambiente juntamente com os ficheiros do projeto. Veja instruções sobre como
criar a aplicação com variáveis de ambiente.
Especifique dependências com pip
O buildpack do Python suporta a gestão de dependências de aplicações através do pip. As dependências da sua aplicação devem ser declaradas num ficheiro requirements.txt
no diretório raiz.
O ficheiro requirements.txt
contém uma linha por pacote. Cada linha contém o nome do pacote e, opcionalmente, a versão pedida. Para mais detalhes, consulte a
referência requirements.txt
.
Segue-se um exemplo de um ficheiro requirements.txt
:
requests==2.20.0 numpy
Configure o PIP
É possível configurar o comportamento do pip através de variáveis de ambiente:
pack build sample-python --builder=gcr.io/buildpacks/builder \
--env PIP_DEFAULT_TIMEOUT='60'
Dependências privadas do Artifact Registry
Um repositório Python do Artifact Registry
pode alojar dependências privadas para a sua função Python. Quando cria uma aplicação no Cloud Build, o buildpack do Python gera automaticamente credenciais do Artifact Registry para a conta de serviço do Cloud Build.
Só tem de incluir o URL do Artifact Registry no seu requirements.txt
sem gerar credenciais adicionais. Por exemplo:
--extra-index-url REPOSITORY_URL
sampleapp
Flask==0.10.1
google-cloud-storage
Ponto de entrada da aplicação
A secção seguinte descreve o ponto de entrada predefinido para o buildpack do Python.
Ponto de entrada para implementações de origem do Cloud Run
Esta funcionalidade só está disponível se implementar o seu código fonte no Cloud Run com o tempo de execução do Python. Esta funcionalidade
não é aplicável se estiver a criar a imagem do contentor diretamente com o comando
pack build
fora do processo de implementação a partir da origem do Cloud Run.
O Python buildpack suporta frameworks Web modernos, como FastAPI, Gradio e Streamlit.
Versão 3.12 e anteriores do Python
Se estiver a usar a versão 3.12 e anteriores do Python, o buildpack do Python usa o Gunicorn por predefinição como o servidor HTTP WSGI para a sua carga de trabalho. O buildpack do Python define o ponto de entrada predefinido como gunicorn -b :8080 main:app
.
Versão 3.13 e posteriores do Python
Para a versão 3.13 e posteriores do Python, o buildpack do Python define o ponto de entrada predefinido para implementações de origem do Cloud Run com base na configuração do servidor Web ou da framework no seu ficheiro requirements.txt
. Esta definição predefinida aplica-se apenas a implementações de origem de serviços do Cloud Run e não a funções do Cloud Run.
Quando implementa um serviço do Cloud Run a partir da origem com o tempo de execução do Python, o buildpack determina a versão do Python e o ponto de entrada predefinido das seguintes formas:
Se não especificar uma versão do Python nos seus ficheiros de origem, o buildpack do Python define a predefinição para a versão do Python mais recente suportada. O buildpack determina o ponto de entrada predefinido com base no servidor Web ou na framework que configurou no ficheiro
requirements.txt
.Se não especificar um servidor Web ou uma framework no ficheiro
requirements.txt
, o buildpack do Python usa o Gunicorn como o servidor HTTP WSGI para a sua carga de trabalho por predefinição. O buildpack do Python define o ponto de entrada predefinido comogunicorn -b :8080 main:app
.O buildpack do Python define o ponto de entrada predefinido com base na seguinte ordem de precedência, conforme definido no ficheiro
requirements.txt
:gunicorn
uvicorn
fastapi[standard]
gradio
streamlit
Configure o servidor Web ou a framework
Para cada configuração comum do Python no ficheiro requirements.txt
, a tabela seguinte mostra os pontos de entrada predefinidos quando a implementação é feita no Cloud Run a partir da origem:
Configuração principal | Ponto de entrada predefinido | Variáveis de ambiente |
---|---|---|
gunicorn |
gunicorn -b :8080 main:app |
|
numpy |
gunicorn -b :8080 main:app |
|
fastapi uvicorn |
uvicorn main:app --host 0.0.0.0 --port 8080 |
|
fastapi[standard] |
uvicorn main:app --host 0.0.0.0 --port 8080 |
|
uvicorn gunicorn |
gunicorn -b :8080 main:app |
|
gradio |
python main.py |
GRADIO_SERVER_NAME=0.0.0.0 GRADIO_SERVER_PORT=8080 |
streamlit |
streamlit run main.py --server.address 0.0.0.0 --server.port 8080 |
Para evitar falhas de implementação, use uma versão do Python suportada nos seus ficheiros de origem e especifique um servidor Web no ficheiro requirements.txt
.
Em alternativa, também pode especificar o ponto de entrada executando o seguinte comando de implementação de origem:
gcloud run deploy SERVICE --source . --set-build-env-vars GOOGLE_ENTRYPOINT="ENTRYPOINT"
Substitua o seguinte:
- SERVICE: o nome do serviço para o qual quer fazer a implementação.
- ENTRYPOINT: o ponto de entrada predefinido que quer usar para o seu código fonte.
Se não conseguir implementar o código-fonte no Cloud Run ou encontrar erros nos registos, consulte o guia de resolução de problemas do Cloud Run.
Ponto de entrada para todas as outras implementações
O buildpack do Python usa o Gunicorn como o servidor HTTP WSGI predefinido para a sua carga de trabalho. As apps criadas com o buildpack do Python iniciam o processo gunicorn
com as predefinições, semelhante à execução do seguinte comando:
gunicorn --bind :8080 main:app
Personalize o ponto de entrada da aplicação
Pode personalizar o comando de início das aplicações através de um Procfile
ou de uma variável de ambiente. Pode ter de o fazer para personalizar as configurações do ponto de entrada predefinido.
Pode criar um Procfile
com as suas definições personalizadas no diretório raiz.
Exemplo:
web: gunicorn --bind :$PORT --workers 1 --threads 8 --timeout 0 main:app
Em alternativa, pode usar a variável de ambiente GOOGLE_ENTRYPOINT
com o comando pack
. Exemplo:
pack build sample-python \
--builder gcr.io/buildpacks/builder
--env "GOOGLE_ENTRYPOINT='gunicorn --bind :$PORT main:app'"
Variáveis de ambiente
O buildpack do Python suporta as seguintes variáveis de ambiente para personalizar o seu contentor
PIP_<key>
Consulte a documentação do pip.
Exemplo: PIP_DEFAULT_TIMEOUT=60
define --default-timeout=60
para comandos pip
.