Azure 功能:在消费计划上安装 Python 个模块和扩展

Azure functions: Installing Python modules and extensions on consumption plan

我正在尝试 运行 具有 Azure 函数的 python 脚本。 我已成功更新 python 版本并在 App Services 计划下在 Azure 功能上安装模块,但我需要在 Consumption 计划下使用它,因为我的脚本每天只会执行一次,而且只会执行几分钟,所以我想要只需支付执行时间。参见:https://azure.microsoft.com/en-au/services/functions/

现在我对此还是个新手,但根据我的理解,消费计划会启动虚拟机并在脚本执行后终止它,这与始终开启的应用服务计划不同。 我不确定为什么这意味着我不能在上面安装任何东西。我认为那只是意味着我每次启动它时都必须安装它。

我已经尝试通过 python 脚本本身和 kudu 命令行安装模块,但没有成功。

虽然在应用程序服务计划下很简单,但请遵循本教程:https://prmadi.com/running-python-code-on-azure-functions-app/

您可以上传您在消费计划中选择的 Python 版本的模块。请参阅此处link的说明:https://github.com/Azure/azure-webjobs-sdk-script/wiki/Using-a-custom-version-of-Python

在 Functions Comsumption 计划中,Kudu 扩展不可用。但是,您可以更新 pip 以便能够正确安装所有依赖项:

  • 在 Functions 上创建 Python 脚本(假设 NameOfMyFunction/run.py)
  • 打开 Kudu 控制台
  • 转到您的脚本文件夹(应该是 d:/home/site/wwwroot/NameOfMyFunction)
  • 在此文件夹中创建一个 virtualenv (python -m virtualenv myvenv)
  • 加载此 venv(cd myenv/Scripts 并调用 activate.bat)

您的 shell 现在应该以 (myvenv) 为前缀

  • 更新 pip (python -m pip install -U pip)
  • 安装你需要的(python -m pip install flask)

现在在 Azure 门户中,在您的脚本中,更新 sys.path 以添加此 venv:

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

你现在应该可以开始你想要的了。

(参考:https://github.com/Azure/azure-sdk-for-python/issues/1044

编辑:阅读之前的评论,看来您需要 numpy。我刚刚测试过,我可以毫无问题地安装 1.12.1。

这对我有用:

Dislaimer: I use C# Function that includes Python script execution, using command line with System.Diagnostics.Process class.

  • 从 Azure 门户为 Azure 函数添加相关的 Python 扩展: 平台功能 -> 开发工具 -> 扩展
    它安装 python 到 D:\home\python364x86(从 Kudu 控制台看到)

  • 添加名为 WEBSITE_USE_PLACEHOLDER 的应用程序设置并将其值设置为 0。这是解决导致 Python 扩展在卸载函数应用程序后停止工作的 Azure Functions 问题所必需的。
    请参阅: 问题。

  • 使用 pip install ...
    从 Kudu CMD 命令行控制台安装包 (在我的例子中是 pip install pandas