Funciones de Azure: instalación de módulos y extensiones de Python en el plan de consumo

Estoy tratando de ejecutar un script de python con funciones de Azure. Tuve éxito al actualizar la versión de python e instalar módulos en las funciones de Azure en el plan de Servicios de aplicaciones, pero necesito usarlo en el plan de Consumo, ya que mi script solo se ejecutará una vez al día y solo por unos minutos, por lo que quiero pagar solo por El tiempo de ejecución. Consulte: https://azure.microsoft.com/en-au/services/functions/

Ahora todavía soy nuevo en esto, pero, según tengo entendido, el plan de consumo hace girar la máquina virtual y la finaliza después de que se haya ejecutado su script, a diferencia del plan del Servicio de aplicaciones que siempre está activado. No estoy seguro de por qué esto significaría que no puedo instalar nada en él. Pensé que eso solo significaría que tengo que instalarlo cada vez que lo enciendo.

He intentado instalar módulos a través de la secuencia de comandos de Python y la línea de comandos kudu sin éxito.

Si bien el plan de servicio de la aplicación era simple, seguir este tutorial: https://prmadi.com/running-python-code-on-azure-functions-app/

    En el plan de consumo de funciones, las extensiones Kudu no están disponibles. Sin embargo, puede actualizar pip para poder instalar todas sus dependencias correctamente:

    • Cree su script de Python en Funciones (digamos NameOfMyFunction / run.py)
    • Abre una consola Kudu
    • Vaya a la carpeta de su script (debería ser d: / home / site / wwwroot / NameOfMyFunction)
    • Cree un virtualenv en esta carpeta (python -m virtualenv myvenv)
    • Cargue este venv (cd myenv / Scripts y llame a active.bat)

    Tu shell ahora debe tener el prefijo (myvenv)

    • Actualizar pip (python -m pip install -U pip)
    • Instala lo que necesites (python -m pip install flask)

    Ahora, en el Portal de Azure, en su script, actualice sys.path para agregar este venv:

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

    introduzca la descripción de la imagen aquí

    Debes poder comenzar lo que deseas ahora.

    (Referencia: https://github.com/Azure/azure-sdk-for-python/issues/1044 )

    Editar: leyendo el comentario anterior, parece que necesita adormecer. Acabo de realizar la prueba ahora mismo y pude instalar 1.12.1 sin problemas.

    Puede cargar los módulos para la versión de Python de su elección en el Plan de Consumo. Por favor consulte las instrucciones en este enlace: https://github.com/Azure/azure-webjobs-sdk-script/wiki/Using-a-custom-version-of-Python

    Esto es lo que funcionó para mí:

    Descargo de responsabilidad: uso la función C # que incluye la ejecución del script Python , usando la línea de comandos con la clase System.Diagnostics.Process .

    • Agregue la extensión de Python relevante para la función de Azure desde el Portal de Azure: Características de la plataforma -> Herramientas de desarrollo -> Extensiones
      Instaló python en D:\home\python364x86 (como se ve desde la consola Kudu)

    • Agregue una configuración de aplicación llamada WEBSITE_USE_PLACEHOLDER y establezca su valor en 0 . Esto es necesario para solucionar un problema de las funciones de Azure que hace que la extensión de Python deje de funcionar después de descargar la aplicación de la función.
      Consulte: Uso de Python 3 en la pregunta de Funciones de Azure .

    • Instala los paquetes desde la consola de línea Kudu CMD usando pip install ...
      (en mi caso era pip install pandas )