Compila una aplicación de Python

Los paquetes de compilación admiten la configuración de lenguaje idiomático a través de variables de entorno.

Especifica la versión de Python

De forma predeterminada, el paquete de compilación de entorno de ejecución de Python usa la última versión estable del intérprete de Python. Si la aplicación requiere una versión específica, puedes especificar una con la inclusión de un archivo .python-version en el directorio raíz de la aplicación.

3.9.9

Usa GOOGLE_PYTHON_VERSION

También es posible especificar la versión de Python a través de la variable de entorno GOOGLE_PYTHON_VERSION. Si ambas configuraciones se establecen, el valor GOOGLE_PYTHON_VERSION tiene prioridad sobre la propiedad .python-version. De forma predeterminada, cuando no se especifican el archivo .python-version y la variable de entorno GOOGLE_PYTHON_VERSION, se usa la última versión de LTS de Python.

A fin de configurar el paquete de compilación para que use Python 3.10 cuando implementes tu app, haz lo siguiente:

pack build sample-python --builder=gcr.io/buildpacks/builder \
  --env GOOGLE_PYTHON_VERSION="3.10.x"

También puedes usar un descriptor de proyectos project.toml para codificar la variable de entorno junto con los archivos de tu proyecto. Consulta las instrucciones para compilar la aplicación con variables de entorno.

Especifica dependencias con pip

El paquete de compilación de Python admite la administración de dependencias de aplicaciones mediante pip. Las dependencias de tu aplicación se deben declarar en un archivo requirements.txt en el directorio raíz.

El archivo requirements.txt contiene una línea por paquete. Cada línea contiene el nombre del paquete y, opcionalmente, la versión solicitada. Para obtener más detalles, consulta la referencia requirements.txt.

El siguiente es un archivo requirements.txt de ejemplo:

requests==2.20.0
numpy

Configura pip

Es posible configurar el comportamiento de pip mediante variables de entorno:

pack build sample-python --builder=gcr.io/buildpacks/builder \
  --env PIP_DEFAULT_TIMEOUT='60'

Dependencias privadas de Artifact Registry

Un repositorio de Python de Artifact Registry puede alojar dependencias privadas para tu función de Python. Cuando compilas una aplicación en Cloud Build, el paquete de compilación de Python generará de forma automática las credenciales de Artifact Registry para la cuenta de servicio de Cloud Build. Solo debes incluir la URL de Artifact Registry en la requirements.txt sin generar credenciales adicionales. Por ejemplo:

--extra-index-url REPOSITORY_URL
sampleapp
Flask==0.10.1
google-cloud-storage

Punto de entrada de la aplicación

El paquete de compilación de Python usa Gunicorn como el servidor HTTP predeterminado para WSGI para tu carga de trabajo. Las apps compiladas con el paquete de compilación de Python inician el proceso gunicorn con una configuración predeterminada, similar a la ejecución:

gunicorn --bind :8080 main:app

Personaliza el punto de entrada de la aplicación

Puedes anular los valores predeterminados de Gunicorn, los valores de punto de entrada, y personalizar el comando de inicio de tu aplicación mediante un Procfile o una variable de entorno.

Puedes crear un Procfile con tu configuración personalizada en el directorio raíz. Ejemplo:

web: gunicorn --bind :$PORT --workers 1 --threads 8 --timeout 0 main:app

Como alternativa, puedes usar la variable de entorno GOOGLE_ENTRYPOINT con el comando pack. Ejemplo:

pack build sample-python \
  --builder gcr.io/buildpacks/builder
  --env "GOOGLE_ENTRYPOINT='gunicorn --bind :$PORT main:app'"

Variables de entorno

El paquete de compilación de Python admite las siguientes variables de entorno para personalizar tu contenedor

PIP_<key>

Consulta la documentación de pip.

Ejemplo: PIP_DEFAULT_TIMEOUT=60 configura --default-timeout=60 para los comandos pip.