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.