Manejo de dependencias


Hay dos formas de especificar dependencias para Cloud Functions escritas en Python: usar el archivo requirements.txt del administrador de paquetes pip o empaquetar dependencias locales junto con su función.

No se admite la especificación de dependencia que utiliza el estándar Pipfile/Pipfile.lock. Su proyecto no debe incluir estos archivos.

Especificando 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 su código de función.

Cuando implementas o vuelves a implementar tu función, Cloud Functions usa pip para descargar e instalar la última versión de tus dependencias como se declara en el archivo requirements.txt . 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, consulte la referencia de requirements.txt .

Para evitar que su compilación se vea afectada por cambios en la versión de dependencia, considere fijar sus paquetes de dependencia a una versión específica.

El siguiente es un archivo requirements.txt de ejemplo:

functions-framework
requests==2.20.0
numpy

El marco de funciones es una dependencia necesaria para todas las funciones. Aunque Cloud Functions lo instala en su nombre cuando se crea la función, le recomendamos que lo incluya como una dependencia explícita para mayor claridad.

Si su función depende de dependencias privadas, le recomendamos que refleje functions-framework en su registro privado. Incluya el functions-framework reflejadas como una dependencia de su función para evitar instalar el paquete desde la Internet pública.

Empaquetar dependencias locales

También puede empaquetar e implementar dependencias junto con su función. Este enfoque es útil si su dependencia no está disponible a través del administrador de paquetes pip o si el acceso a Internet de su entorno de Cloud Functions está restringido.

Por ejemplo, podría utilizar una estructura de directorio como la siguiente:

myfunction/
├── main.py
└── localpackage/
    ├── __init__.py
    └── script.py

Luego puede importar el código como de costumbre desde localpackage utilizando la siguiente declaración import .

# Code in main.py
from localpackage import script

Tenga en cuenta que este enfoque no ejecutará ningún archivo setup.py . Los paquetes con esos archivos aún se pueden empaquetar, pero es posible que no se ejecuten correctamente en Cloud Functions.