Gérer les dépendances


Il existe deux manières de spécifier des dépendances pour Cloud Functions rédigées en Python : en utilisant le fichier requirements.txt du gestionnaire de paquets pip ou en empaquetant les dépendances locales avec votre fonction.

La spécification des dépendances avec le fichier standard Pipfile/Pipfile.lock n'est actuellement pas prise en charge. Votre projet ne doit pas contenir ces fichiers.

Spécifier des dépendances avec pip

Dans Python, les dépendances sont gérées avec piprequirements.txt et exprimées dans un fichier de métadonnées appelé . Ce fichier doit se trouver dans le même répertoire que le fichier main.py qui contient le code de votre fonction.

Lorsque vous déployez ou redéployez votre fonction, Cloud Functions utilise pip pour télécharger et installer la dernière version de votre dépendances, comme indiqué dans le fichier requirements.txt. Le fichier requirements.txt contient une ligne par package. Chaque ligne contient le nom du package et, éventuellement, la version demandée. Pour en savoir plus, consultez le requirements.txt référence.

Pour éviter que votre compilation ne soit affectée par les modifications de version de dépendance, envisagez d'épingler vos packages de dépendance sur une version spécifique.

Voici un exemple de fichier requirements.txt :

functions-framework
requests==2.20.0
numpy

Le Functions Framework est une dépendance requise pour toutes les fonctions. Bien que Cloud Functions l'installe en votre nom lors de la création de la fonction, nous vous recommandons de l'inclure en tant que dépendance explicite pour plus de clarté.

Si votre fonction repose sur des dépendances privées, nous vous recommandons de mettre en miroir functions-framework dans votre registre privé. Incluez la valeur functions-framework mise en miroir en tant que dépendance à votre fonction pour éviter d'installer le package depuis l'Internet public.

Emballer les dépendances locales

Vous pouvez également empaqueter et déployer les dépendances avec votre fonction. Cette approche est utile si votre dépendance n'est pas disponible via le gestionnaire de paquets pip ou si l'accès Internet de votre environnement Cloud Functions est limité.

Par exemple, vous pouvez utiliser une structure de répertoires comme suit :

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

Vous pouvez ensuite importer le code comme d'habitude à partir de localpackage en utilisant l'instruction import suivante.

# Code in main.py
from localpackage import script

Notez qu'avec cette approche, aucun fichier setup.py n'est exécuté. Les packages avec ces fichiers peuvent toujours être regroupés, mais peuvent ne pas s'exécuter correctement sur Cloud Functions.