Especifica dependencias en Python
Existen dos formas de especificar las dependencias para las funciones de Cloud Functions escritas en Python: usar el archivo requirements.txt
del administrador de paquetes pip o empaquetar las dependencias locales junto con tu función.
La especificación de dependencias que usa el estándar Pipfile/Pipfile.lock no es compatible. Tu proyecto no debe incluir estos archivos.
Especifica dependencias con pip
Las dependencias en Python se administran con pip y se expresan en un archivo de metadatos llamado requirements.txt
.
Este archivo debe estar en el mismo directorio que el archivo main.py
que contiene el código de tu función.
Cuando implementas tu función, Cloud Functions descarga e instala dependencias declaradas en el archivo requirements.txt
mediante pip.
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
Empaqueta las dependencias locales
Puedes empaquetar y, además, implementar dependencias junto con tu función. Este enfoque es útil si tu dependencia no está disponible a través del administrador de paquetes pip o si el acceso a Internet del entorno de Cloud Functions está restringido.
Por ejemplo, puedes usar una estructura de directorio como la que se muestra a continuación:
myfunction/ ├── main.py └── localpackage/ ├── __init__.py └── script.py
Luego, puedes importar el código como de costumbre desde localpackage
con la siguiente declaración import
.
# Code in main.py from localpackage import script
Ten en cuenta que este enfoque no ejecutará ningún archivo setup.py
. Los paquetes con esos archivos aún se pueden agrupar, pero es posible que no se ejecuten correctamente en Cloud Functions.
Usa dependencias privadas
Dependencias privadas de Artifact Registry
Un repositorio de Python de Artifact Registry puede alojar dependencias privadas para tu función de Python. Cuando se implementa en Cloud Functions, el proceso de compilación 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
Dependencias privadas de otros repositorios
Las dependencias se instalan en un entorno de Cloud Build que no proporciona acceso a las llaves SSH. Los paquetes que se alojan en repositorios que requieren una autenticación basada en SSH se deben copiar y subir junto con el código del proyecto, como se describe en la sección anterior.
Puedes usar el comando pip install
con el marcador -t DIRECTORY
para copiar las dependencias privadas en un directorio local antes de implementar tu aplicación, de la siguiente manera:
Copia tu dependencia en un directorio local:
pip install -t DIRECTORY DEPENDENCY
Agrega un archivo
__init__.py
vacío al directorioDIRECTORY
para convertirlo en un módulo.Importa desde este módulo para usar tu dependencia:
import DIRECTORY.DEPENDENCY
Paquetes preinstalados
Los siguientes paquetes de Python se instalan automáticamente junto con tu función durante la implementación. Si usas alguno de estos paquetes en el código de tu función, te recomendamos que incluyas las siguientes versiones en el archivo requirements.txt
:
Python 3.7
Python 3.8 y versiones posteriores
* `pip` (latest version)
* `setuptools` (latest version)
* `wheel` (determined by product requirements)
Además, el entorno de ejecución de Python incluye una serie de paquetes de sistema en el entorno de ejecución. Si tu función usa una dependencia que requiere un paquete de sistema que no está en la lista, puedes solicitar un paquete.