Especifica las dependencias de tu aplicación para las versiones de Python compatibles con cualquiera de los siguientes métodos:
Usa un archivo
requirements.txten el directorio raíz. Este archivo debe estar en el mismo directorio que el archivomain.pyque contiene el código fuente. El archivorequirements.txtcontiene una línea por paquete. Cada línea contiene el nombre del paquete y, opcionalmente, la versión solicitada. Para evitar que la compilación se vea afectada por los cambios en la versión de las dependencias, te recomendamos que fijes los paquetes de dependencias a una versión específica.A continuación, se muestra un ejemplo de archivo
requirements.txt:functions-framework requests==2.20.0 numpyUsa un archivo
pyproject.tomlpara especificar las dependencias. Si gestionas las dependencias de tu aplicación en un archivopyproject.tomlen lugar de en el archivorequirements.txt, el paquete de compilación de Python determinará el gestor de paquetes en función de la configuración que especifiques en el archivopyproject.toml. Para obtener más información, consulta el artículo Desplegar aplicaciones Python con un archivopyproject.toml.Si tu aplicación usa tanto el archivo
pyproject.tomlcomo el archivorequirements.txt, este último tiene prioridad.requirements.txtA continuación, se muestra un ejemplo de archivo
pyproject.toml:[project] name = "demo-app" version = "0.1.0" description = "" requires-python = ">=3.10" dependencies = [ "flask>=3.1.1", "gunicorn>=23.0.0", ] [build-system] requires = ["setuptools>=61.0"] build-backend = "setuptools.build_meta"
Empaqueta las dependencias locales junto con tu función.
No se admite la especificación de dependencias mediante el estándar
Pipfile/Pipfile.lock. Tu proyecto no debe incluir estos archivos.Si usas un archivo
requirements.txtpara gestionar las dependencias, Cloud Run instalará Functions Framework por ti cuando crees una función. Sin embargo, te recomendamos que incluyas Functions Framework como dependencia explícita para evitar discrepancias.Cuando usas un archivo
pyproject.toml, debes incluir Functions Framework como dependencia, ya que Cloud Run no lo instala por ti.
Gestor de paquetes
Si gestionas tus dependencias con un requirements.txt file, el gestor de paquetes predeterminado varía en función de la versión de Python que configures.
Si usas un archivo pyproject.toml para gestionar las dependencias en lugar de un archivo requirements.txt, el paquete de compilación de Python determinará el gestor de paquetes en función de los ajustes de configuración del archivo pyproject.toml. El buildpack es compatible con los gestores de paquetes pip, uv y Poetry. Para obtener más información, consulta Implementar aplicaciones de Python con un archivo pyproject.toml.
Python 3.14 y versiones posteriores
A partir de la versión 3.14 (vista previa) de Python, el paquete de compilación de Python usa el gestor de paquetes uv como instalador predeterminado de las dependencias que especifiques en el archivo requirements.txt.
Para usar pip como gestor de paquetes, configura la variable de entorno GOOGLE_PYTHON_PACKAGE_MANAGER="pip".
Ejecuta el comando gcloud run deploy para asignar el valor pip a la variable de entorno del gestor de paquetes:
gcloud run deploy SERVICE --source . \
--set-build-env-vars=GOOGLE_PYTHON_PACKAGE_MANAGER=pip
Sustituye SERVICE por el nombre de tu servicio de Cloud Run.
Python 3.13 y versiones anteriores
En las versiones de Python 3.13 y anteriores, el paquete de compilación de Python usa el administrador de paquetes pip para instalar las dependencias que definas en el archivo requirements.txt.
Para usar uv (vista previa) como gestor de paquetes, configura la variable de entorno GOOGLE_PYTHON_PACKAGE_MANAGER="uv".
Ejecuta el comando gcloud beta run deploy para asignar el valor uv a la variable de entorno del gestor de paquetes:
gcloud beta run deploy SERVICE --source . \
--set-build-env-vars=GOOGLE_PYTHON_PACKAGE_MANAGER=uv
Sustituye SERVICE por el nombre de tu servicio de Cloud Run.
Empaquetar dependencias locales
Empaqueta y despliega las dependencias junto con tu función. Este enfoque es útil si tu dependencia no está disponible cuando usas un gestor de paquetes compatible o si el acceso a Internet de tu entorno de Cloud Run está restringido.
También puedes usar un archivo requirements.txt para especificar dependencias adicionales que no hayas empaquetado junto con tu función.
Por ejemplo, puede usar la siguiente estructura de directorios:
myfunction/
├── main.py
└── localpackage/
├── __init__.py
└── script.py
Importa el código de localpackage con la siguiente instrucción import:
# code in main.py
from localpackage import script
Con este método no se ejecutará ningún archivo setup.py. Puedes agrupar los paquetes con esos archivos, pero es posible que el paquete no se ejecute correctamente en las funciones de Cloud Run.
Dependencias copiadas
Las dependencias copiadas son aquellas cuyo origen se incluye directamente en tu paquete de código fuente y se vuelven a compilar junto con tu código.
Usa la variable de entorno de compilación GOOGLE_VENDOR_PIP_DEPENDENCIES para crear copias de las dependencias de pip y evitar instalarlas durante la implementación.
Crear dependencias copiadas
Asegúrate de que python3 esté instalado en tu sistema de desarrollo.
Declara las dependencias de tu aplicación en un archivo
requirements.txtdel directorio raíz de tu árbol de desarrollo.Declara Functions Framework como requisito incluyendo
functions-frameworken una línea independiente de tu archivorequirements.txt.Descarga las dependencias de tu función en tu directorio local. Los pasos para hacerlo dependen de si la dependencia es un archivo de rueda de Python (*.whl) o un archivo tar (*.tar.gz).
Si la dependencia es un wheel de Python (*.whl), descárgala en el directorio raíz de tu árbol de desarrollo con este comando pip:
python3 -m pip download -r requirements.txt --only-binary=:all: \ -d DIRECTORY \ --python-version PYTHON_RUNTIME_VERSION \ --platform manylinux2014_x86_64 \ --implementation cpHaz los cambios siguientes:
- DIRECTORY: nombre del directorio local en el que se descargará.
- PYTHON_RUNTIME_VERSION: la versión de Python que se va a usar para las comprobaciones de compatibilidad. Por ejemplo,
314para Python 3.14.
Esta versión debe coincidir con uno de los runtimes de Python compatibles.
La estructura de directorios resultante debería ser similar a esta:
myfunction/ ├── main.py └── requirements.txt └── DIRECTORY ├── dependency1.whl └── dependency2.whl
Si la dependencia es un archivo tar (*.tar.gz):
Si la dependencia está escrita en Python, usa pip para descargarla:
python3 -m pip download -r requirements.txt \ -d DIRECTORYSi una dependencia consta de código escrito en C o C++, descarga y compila el código por separado.
Despliega tu función y sus dependencias copiadas:
gcloud functions deploy FUNCTION_NAME \ --runtime PYTHON_RUNTIME_NAME \ --set-build-env-vars GOOGLE_VENDOR_PIP_DEPENDENCIES=DIRECTORYHaz los cambios siguientes:
- FUNCTION_NAME: el nombre de la función que vas a implementar.
- PYTHON_RUNTIME_NAME: el nombre de uno de los runtimes de Python admitidos para ejecutar la función implementada (por ejemplo, python311). Debe ser la misma versión del tiempo de ejecución de Python que hayas usado en tu entorno de desarrollo local.
- DIRECTORY: el nombre del directorio que contiene las dependencias copiadas.
Para obtener más información sobre cómo usar paquetes de compilación, consulta Compilar una función con paquetes de compilación.
Usar dependencias privadas
Puedes usar dependencias privadas de Artifact Registry o de otros repositorios.
Dependencias privadas de Artifact Registry
Un repositorio de Python de Artifact Registry aloja dependencias privadas de tu función de Python. Cuando se implementa en Cloud Run, el proceso de compilación genera automáticamente credenciales de Artifact Registry para la cuenta de servicio de Cloud Build.
Incluya la URL de Artifact Registry en su requirements.txt sin generar credenciales adicionales. Por ejemplo:
--index-url REPOSITORY_URL
sampleapp
Flask==0.10.1
google-cloud-storage
Si tu compilación necesita varios repositorios, usa un repositorio virtual de Artifact Registry para controlar de forma segura el orden en el que pip busca en tus repositorios.
Dependencias privadas de otros repositorios
Los buildpacks instalan dependencias en un entorno de Cloud Build que no proporciona acceso a claves SSH. Copia los paquetes que alojas en repositorios que requieren autenticación basada en SSH y sube los paquetes con el código de tu proyecto.
Usa el comando pip install con la marca -t DIRECTORY para copiar las dependencias privadas en un directorio local antes de implementar tu aplicación, como se indica a continuación:
- Copia la dependencia en un directorio local:
pip install -t DIRECTORY DEPENDENCY
- Añade un archivo
__init__.pyvacío al directorioDIRECTORYpara convertirlo en un módulo. - Importa desde este módulo para usar tu dependencia:
import DIRECTORY.DEPENDENCY
Paquetes preinstalados
El paquete de compilación de Python instala los siguientes paquetes de Python cuando despliegas tu función. Si usas alguno de estos paquetes en el código de tu función, incluye las siguientes versiones en el archivo requirements.txt:
Para evitar problemas con las actualizaciones de versiones de dependencias, fija el paquete a una versión específica.
El paquete de compilación de Python instala los siguientes paquetes fijados a una versión específica:
pip(última versión)setuptools(última versión)wheel(determinado por los requisitos del producto)
El tiempo de ejecución de Python también incluye varios paquetes del sistema en el entorno de ejecución.