web-dev-qa-db-fra.com

Fonctions Azure: Installation de modules et d'extensions Python sur un plan de consommation

J'essaie d'exécuter un script python avec des fonctions Azure. J'ai réussi à mettre à jour la version Python et à installer des modules sur des fonctions Azure dans le plan App Services, mais je dois l'utiliser dans le plan Consommation, car mon script ne sera exécuté qu'une fois par jour et pendant quelques minutes à peine. ne payez que pour le moment de l'exécution. Voir: https://Azure.Microsoft.com/en-au/services/functions/

Maintenant, je suis encore novice dans ce domaine, mais si je comprends bien, le plan de consommation accélère et met fin à la machine virtuelle après l'exécution de votre script, contrairement au plan App Service toujours activé. Je ne sais pas pourquoi cela voudrait dire que je ne peux rien installer dessus. Je pensais que cela signifierait simplement que je devrais l'installer à chaque fois que je le lance. 

J'ai essayé d'installer des modules via le script Python lui-même et la ligne de commande kudu sans succès.

Tandis que sous le plan de service de l'application, c'était simple, suivez ce tutoriel: https://prmadi.com/running-python-code-on-Azure-functions-app/

12
mike

Sur le plan de consommation des fonctions, les extensions Kudu ne sont pas disponibles. Cependant, vous pouvez mettre à jour pip pour pouvoir installer correctement toutes vos dépendances:

  • Créez votre script Python sur des fonctions (disons NameOfMyFunction/run.py)
  • Ouvrir une console Kudu
  • Allez dans le dossier de votre script (devrait être d:/home/site/wwwroot/NameOfMyFunction)
  • Créez un fichier virtualenv dans ce dossier (python -m virtualenv myvenv)
  • Chargez ce fichier (cd myenv/Scripts et appelez activate.bat)

Votre shell devrait maintenant être préfixé par (myvenv)

  • Mise à jour du pip (python -m pip install -U pip)
  • Installez ce dont vous avez besoin (python -m pip install flask)

Maintenant, dans le portail Azure, dans votre script, mettez à jour le chemin sys.path pour ajouter ce qui suit:

import sys, os.path
sys.path.append(os.path.abspath(os.path.join(os.path.dirname( __file__ ), 'myvenv/Lib/site-packages')))

 enter image description here

Vous devriez pouvoir commencer ce que vous voulez maintenant.

(Référence: https://github.com/Azure/azure-sdk-for-python/issues/1044 )

Edit: en lisant le commentaire précédent, il semble que vous ayez besoin de Numpy. Je viens de tester en ce moment et j'ai pu installer 1.12.1 sans aucun problème.

32
Laurent Mazuel

Vous pouvez télécharger les modules pour la version Python de votre choix dans Plan de consommation. Veuillez vous référer aux instructions sur ce lien: https://github.com/Azure/azure-webjobs-sdk-script/wiki/Using-a-custom-version-of-Python

3
Ling Toh

C'est ce qui a fonctionné pour moi:

Dislaimer: J'utilise C # Fonction qui inclut l'exécution du script Python, à l'aide de la ligne de commande avec la classe System.Diagnostics.Process.

  • Ajoutez une extension Python pertinente pour la fonction Azure de Azure Portal: Fonctionnalités de la plateforme -> Outils de développement -> Extensions
    Il a installé python dans D:\home\python364x86 (comme on le voit depuis la console Kudu) 

  • Ajoutez un paramètre d'application appelé WEBSITE_USE_PLACEHOLDER et définissez sa valeur sur 0. Cela est nécessaire pour contourner un problème lié à Azure Functions qui provoque l'arrêt de l'extension Python après le déchargement de l'application de fonction.
    Voir: Utilisation de Python 3 dans Azure Functions question. 

  • Installez les packages à partir de la console de ligne Kudu CMD en utilisant pip install ...
    (dans mon cas c'était pip install pandas

0
Dima Gershman