Existen dos formas de especificar las dependencias para las 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 o vuelves a implementar tu función, Cloud Functions usa pip para descargar y, luego, 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, consulta la referencia requirements.txt
.
Para evitar que tu compilación se vea afectada por los cambios de versión de dependencia, considera fijar tus 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
Functions Framework es una dependencia obligatoria para todas las funciones. Aunque Cloud Functions la instala en tu nombre cuando se crea la función, te recomendamos que la incluyas como una dependencia explícita para mayor claridad.
Si tu
función depende de dependencias privadas, te recomendamos que
dupliques functions-framework
en tu registro privado. Incluye el functions-framework
duplicado
como una dependencia en tu función para evitar la instalación del
paquete desde la Internet pública.
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.