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.13
Utilizar 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.
Para configurar el paquete de compilación para que use Python 3.13 cuando implementes tu app, haz lo siguiente:
pack build sample-python --builder=gcr.io/buildpacks/builder \
--env GOOGLE_PYTHON_VERSION="3.13.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
En la siguiente sección, se describe el punto de entrada predeterminado para el paquete de compilación de Python.
Punto de entrada para las implementaciones de origen de Cloud Run
Esta función solo está disponible si implementas tu código fuente en Cloud Run con el entorno de ejecución de Python. Esta función no se aplica si compilas la imagen de contenedor directamente con pack build fuera del proceso de implementación de la fuente de Cloud Run.
El paquete de compilación de Python admite frameworks web modernos, como FastAPI, Gradio y Streamlit.
Versión 3.12 de Python y versiones anteriores
Si usas la versión 3.12 y versiones anteriores de Python, el paquete de compilación de Python usa Gunicorn de forma predeterminada como el servidor HTTP WSGI para tu carga de trabajo. El paquete de compilación de Python establece el punto de entrada predeterminado en gunicorn -b :8080 main:app.
Python 3.13 y versiones posteriores
Para la versión 3.13 y posteriores de Python, el paquete de compilación de Python establece el punto de entrada predeterminado para las implementaciones de origen de Cloud Run según la configuración del servidor web o del framework en tu archivo requirements.txt. Este parámetro de configuración predeterminado solo se aplica a las implementaciones de código fuente de servicios de Cloud Run, no a las funciones de Cloud Run.
Cuando implementas un servicio de Cloud Run desde la fuente con el entorno de ejecución de Python, el paquete de compilación determina la versión de Python y el punto de entrada predeterminado de las siguientes maneras:
Si no especificas una versión de Python en tus archivos fuente, el buildpack de Python establece la versión de Python compatible más reciente como la predeterminada. El buildpack determina el punto de entrada predeterminado según el servidor web o el framework que configuraste en tu archivo
requirements.txt.Si no especificas un servidor web o un framework en tu archivo
requirements.txt, el paquete de compilación de Python usará Gunicorn de forma predeterminada como el servidor HTTP WSGI para tu carga de trabajo. El paquete de compilación de Python establece el punto de entrada predeterminado engunicorn -b :8080 main:app.El paquete de compilación de Python establece el punto de entrada predeterminado según el siguiente orden de prioridad, como se define en el archivo
requirements.txt:gunicornuvicornfastapi[standard]gradiostreamlit
Configura el servidor web o el framework
En la siguiente tabla, se muestran los puntos de entrada predeterminados para cada configuración común de Python en el archivo requirements.txt cuando se realiza la implementación en Cloud Run desde el código fuente:
| Configuración principal | Punto de entrada predeterminado | Variables de entorno |
|---|---|---|
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 errores de implementación, usa una versión de Python compatible en tus archivos fuente y especifica un servidor web en tu archivo requirements.txt.
Como alternativa, también puedes especificar el punto de entrada ejecutando el siguiente comando de implementación de código fuente:
gcloud run deploy SERVICE --source . --set-build-env-vars GOOGLE_ENTRYPOINT="ENTRYPOINT"
Reemplaza lo siguiente:
- SERVICE: Es el nombre del servicio en el que deseas realizar la implementación.
- ENTRYPOINT: Es el punto de entrada predeterminado que deseas usar para tu código fuente.
Si no puedes implementar tu código fuente en Cloud Run o encuentras errores en los registros, consulta la guía de solución de problemas de Cloud Run.
Punto de entrada para todas las demás implementaciones
El paquete de compilación de Python usa Gunicorn como el servidor HTTP WSGI predeterminado para tu carga de trabajo. Las apps compiladas con el paquete de compilación de Python inician el proceso gunicorn con la configuración predeterminada, similar a la ejecución de lo siguiente:
gunicorn --bind :8080 main:app
Personaliza el punto de entrada de la aplicación
Puedes personalizar el comando de inicio de las aplicaciones con un Procfile o una variable de entorno. Es posible que debas hacerlo para personalizar la configuración predeterminada del punto de entrada.
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.