Los paquetes de compilación admiten la configuración idiomática de los lenguajes a través de variables de entorno.
Especificar la versión de Python
De forma predeterminada, el paquete de compilación de Python Runtime usa la última versión estable del intérprete de Python. Si tu aplicación requiere una versión específica, puedes especificarla incluyendo un archivo .python-version
en el directorio raíz de la aplicación.
3.13
Usar GOOGLE_PYTHON_VERSION
También se puede especificar la versión de Python mediante la variable de entorno GOOGLE_PYTHON_VERSION
.
Si se definen ambas configuraciones, el valor de GOOGLE_PYTHON_VERSION
tiene prioridad sobre el archivo .python-version
. De forma predeterminada, si no se especifican el archivo .python-version
ni la variable de entorno GOOGLE_PYTHON_VERSION
, se usa la versión LTS más reciente de Python.
Para configurar el paquete de compilación para que use Python 3.13 al implementar tu aplicación, 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 proyecto 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.
Especificar dependencias con pip
El paquete de compilación de Python permite gestionar las dependencias de las aplicaciones mediante pip. Las dependencias de tu aplicación deben declararse en un archivo requirements.txt
del 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 información, consulta la referencia de requirements.txt
.
A continuación, se muestra un ejemplo de archivo requirements.txt
:
requests==2.20.0 numpy
Configurar la función Imagen en imagen
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 de tu función de Python. Al compilar una aplicación en Cloud Build, el paquete de compilación de Python generará automáticamente credenciales de Artifact Registry para la cuenta de servicio de Cloud Build.
Solo tiene que incluir la URL de Artifact Registry en su 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 del paquete de compilación de Python.
Punto de entrada para los despliegues de origen de Cloud Run
Esta función solo está disponible si despliegas tu código fuente en Cloud Run con el tiempo de ejecución de Python. Esta función no se aplica si compilas tu imagen de contenedor directamente con pack build
fuera del proceso de despliegue de origen de Cloud Run.
El paquete de compilación de Python es compatible con frameworks web modernos, como FastAPI, Gradio y Streamlit.
Versión 3.12 de Python y anteriores
Si usas la versión 3.12 o una anterior de Python, el paquete de compilación de Python usará Gunicorn de forma predeterminada como servidor HTTP WSGI para tu carga de trabajo. El paquete de compilación de Python define el punto de entrada predeterminado como gunicorn -b :8080 main:app
.
Python 3.13 y versiones posteriores
En Python 3.13 y versiones posteriores, el paquete de compilación de Python define el punto de entrada predeterminado de los despliegues de origen de Cloud Run en función de la configuración del servidor web o del framework en el archivo requirements.txt
. Este ajuste predeterminado solo se aplica a los despliegues de origen de servicios de Cloud Run, no a las funciones de Cloud Run.
Cuando despliegas un servicio de Cloud Run desde una fuente con el tiempo de ejecución de Python, el buildpack determina la versión de Python y el punto de entrada predeterminado de las siguientes formas:
Si no especificas una versión de Python en tus archivos de origen, el paquete de compilación de Python definirá de forma predeterminada la versión de Python más reciente compatible. El buildpack determina el punto de entrada predeterminado en función del servidor web o del framework que hayas configurado en el archivo
requirements.txt
.Si no especifica un servidor web o un framework en el archivo
requirements.txt
, el paquete de compilación de Python usará Gunicorn de forma predeterminada como servidor HTTP WSGI para su carga de trabajo. El paquete de compilación de Python define el punto de entrada predeterminado comogunicorn -b :8080 main:app
.El paquete de compilación de Python define el punto de entrada predeterminado según el siguiente orden de precedencia, tal como se define en el archivo
requirements.txt
:gunicorn
uvicorn
gradio
streamlit
.
Configurar el servidor web o el framework
En la siguiente tabla se muestran los puntos de entrada predeterminados de cada configuración común de Python en el archivo requirements.txt
al implementar 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 |
|
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 de origen y especifica un servidor web en el archivo requirements.txt
.
También puede especificar el punto de entrada ejecutando el siguiente comando de implementación de origen:
gcloud run deploy SERVICE --source . --set-build-env-vars GOOGLE_ENTRYPOINT="ENTRYPOINT"
Haz los cambios siguientes:
- SERVICE: el nombre del servicio en el que quieras implementar la aplicación.
- ENTRYPOINT: el punto de entrada predeterminado que quieras usar para tu código fuente.
Si no puedes desplegar 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 el resto de los despliegues
El paquete de compilación de Python usa Gunicorn
como servidor HTTP WSGI predeterminado para tu carga de trabajo. Las aplicaciones creadas con el paquete de compilación de Python inician el proceso gunicorn
con la configuración predeterminada, de forma similar a la siguiente:
gunicorn --bind :8080 main:app
Personalizar el punto de entrada de la aplicación
Puedes personalizar el comando de inicio de las aplicaciones mediante una Procfile
o una variable de entorno. Es posible que tengas que hacerlo para personalizar las configuraciones de punto de entrada predeterminadas.
Puedes crear un Procfile
con tus ajustes personalizados en el directorio raíz.
Ejemplo:
web: gunicorn --bind :$PORT --workers 1 --threads 8 --timeout 0 main:app
También 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
define --default-timeout=60
para los comandos pip
.