Gestion des dépendances


Il existe deux manières de spécifier les dépendances pour les fonctions Cloud écrites en Python : en utilisant le fichier requirements.txt du gestionnaire de packages pip ou en empaquetant les dépendances locales avec votre fonction.

La spécification de dépendance utilisant la norme Pipfile/Pipfile.lock n'est pas prise en charge. Votre projet ne doit pas inclure ces fichiers.

Spécification des dépendances avec pip

Les dépendances en Python sont gérées avec pip et exprimées dans un fichier de métadonnées appelé requirements.txt . Ce fichier doit se trouver dans le même répertoire que le fichier main.py qui contient votre code de 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 vos dépendances, comme déclaré 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 plus de détails, consultez la référence requirements.txt .

Pour éviter que votre build ne soit affecté par les modifications de version des dépendances, pensez à épingler vos packages de dépendances à 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 obligatoire 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 le functions-framework en miroir en tant que dépendance de votre fonction pour éviter d'installer le package à partir de l'Internet public.

Emballage des dépendances locales

Vous pouvez également empaqueter et déployer des dépendances parallèlement à votre fonction. Cette approche est utile si votre dépendance n'est pas disponible via le gestionnaire de packages pip ou si l'accès Internet de votre environnement Cloud Functions est restreint.

Par exemple, vous pouvez utiliser une structure de répertoires telle que la suivante :

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

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

# Code in main.py
from localpackage import script

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