【发布时间】:2022-01-21 12:42:59
【问题描述】:
我有一个天蓝色的功能。我想在函数中安装一个 python 外部轮子文件。在本地,我使用 pip install 安装。我尝试将文件放在 python 包中并尝试使用 requirements.txt 文件进行安装,但没有部署该函数。
【问题讨论】:
标签: azure azure-functions python-wheel
我有一个天蓝色的功能。我想在函数中安装一个 python 外部轮子文件。在本地,我使用 pip install 安装。我尝试将文件放在 python 包中并尝试使用 requirements.txt 文件进行安装,但没有部署该函数。
【问题讨论】:
标签: azure azure-functions python-wheel
您可以按照以下步骤将外部滚轮安装到 azure 函数中:
来自azure python function 的这个 github 示例。
您可以向https://{function app name}.azurewebsites.net/api/{function name} 发出HTTP 请求,并在克隆后测试上述示例输出。
我们可以使用pip 在我们的 Azure 环境中安装我们的模块。
我们需要两个库,pycrypto 和 hdfk。 Microsoft 有一个 doc,关于如何在本地 Windows 环境中编译模块。按照这些说明生成您在接下来的步骤中需要的 pycrypto 轮子。
要告诉 pip 要安装什么,我们需要将 requirements.txt 文件添加到我们项目的根目录和已编译的轮子。
这是需求文件的样子。
--find-links wheelhouse
pycrypto==2.6.1
hkdf==0.0.3
而且更新后的项目结构现在看起来有点像这样
.
+--EDIGenerator
+--function.json
+--run.py
+--lib
+--AzureHTTPHelper.py
+--wheelhouse
+--pycrypto-2.6.1-cp27-none-win32.whl
.gitignore
host.json
README.md
requirements.txt
同时更新 run.py 以包含生成 eid 的代码,您可以在此处查看实现:https://github.com/myquay/Sample.Azure.Functions.Python/blob/master/EDIGenerator/run.py
注意:在 Azure 中,我们将在 virtual environment 中安装所有这些模块。
所以 Python 知道要从这个位置导入我们的库,请确保在导入这些库的任何文件中都有 sys.path.append(os.path.abspath(os.path.join(os.path.dirname( __file__ ), '..', 'env/Lib/site-packages')))。_
我们将手动运行我们的 Kudu 脚本:
通过单击“功能应用设置”下的“转到 Kudu”按钮打开 kudu。
导航到您的函数文件夹cd D:\home\site\wwwroot
设置你的python虚拟环境,python可执行文件只是安装在正常的地方。 D:\Python27\Scripts\virtualenv.exe env
激活你的虚拟环境"env/Scripts/activate.bat"
从 requirements.txt pip install -r requirements.txt 安装
注意:*如果您收到错误“Unable to find vcvarsall.bat”,则表示您上传的轮子不兼容。确保为正确版本的 Python 编译轮子
【讨论】: