Crie uma aplicação Python

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 como gunicorn -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:

    1. gunicorn
    2. uvicorn
    3. fastapi[standard]
    4. gradio
    5. 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.