我正在考虑使用Azure网站进行带有Flask的Python项目。我已经有一个使用此配置运行的测试站点。我使用的是cPhyton 2.7;IronPhyton在这个项目中被完全抛弃了,据我所知,它在Azure中(还(不受支持。
不好的部分是我需要添加scipy
&numpy
对于这个项目来说,这是一个不可避免的要求。据我所知,numpy和scipy是编译的非托管代码和python代码的混合体,它们不是标准Azure基础设施的一部分。
是否可以将numpy/scipy包添加到Azure网站?如果是,怎么办?
注意:我知道我可以使用虚拟机(无论是否使用azure(,这是我的第二个选择,但我想做出明智的决定。
感谢
我能够将Numpy添加到我的Azure Web App网站。我相信我的方法也适用于SciPy。
我假设你有一个本地存储库(我使用的是GIT(,并将其上传到你的Azure网站。我正在使用Django,在库中有一个名为requirements.txt的文件,我敢打赌它也适用于Flask。该文件的每一行都包含一个要添加到安装中的程序包。
起初,我只是简单地添加了一行"Numpy",Azure找到了一个包并尝试安装,但失败了。所以我的下一次尝试是从这个网站下载了一个"轮子".whl包:
http://www.lfd.uci.edu/~gohlke/pythonlibs/
其包括所有依赖关系。下载Numpy和SciPy轮子文件的适当文件(Python的正确版本和32或64位,可以在Azure控制面板上选择(,并将它们粘贴到您的基本目录中,然后将它们添加到您的项目中。现在有一行到requirements.txt,只有文件名,如下所示:
numpy-1.9.2+mkl-cp27-none-win32.whl
提交并推送Azure和Voila!一切都安装正确。这也适用于我在该网站的OpenCV轮子包。祝你好运
OnTheReverse的回答很好,但截至本文撰写之时,pythonlibs网站上的轮子无法完全按照提供的方式部署到Azure Web应用程序。幸运的是,重命名轮子文件似乎解决了numpy、panda和scipy的问题。
目前,当我从Python 3.4 WebJob运行import pip; print(pip.pep425tags.get_supported())
时,我会得到以下输出:
[09/28/2016 17:08:30 > 775106: INFO] [('cp34', 'none', 'win32'),
('cp34', 'none', 'any'), ('cp3', 'none', 'any'), ('cp33', 'none', 'any'),
('cp32', 'none', 'any'), ('cp31', 'none', 'any'), ('cp30', 'none', 'any'),
('py34', 'none', 'any'), ('py3', 'none', 'any'), ('py33', 'none', 'any'),
('py32', 'none', 'any'), ('py31', 'none', 'any'), ('py30', 'none', 'any')]
pythonlib中的numpy-1.11.2rc1+mkl-cp34-cp34m-win32.whl
文件将解析为('cp34','cp34m','win32'(,因此不受支持。幸运的是,可以通过将轮子重命名为numpy-1.11.2rc1+mkl-cp34-none-win32.whl
来部署轮子。类似的修改适用于pandas
和scipy
包。
此外,关于OnTheReverse建议的方法的一些澄清说明:
- 有关为Web应用程序部署创建git repo的更多信息,请参阅此处。您可以将轮子添加到git repo的基本目录中,然后将每个文件名包含在
requirements.txt
文件中 在您尝试在WebJob中导入程序包之前,您需要确保Web App的网站程序包文件夹位于系统路径上。您可以在WebJob的
run.py
文件的开头添加以下行:import sys, os sys.path.append('D:\home\site\wwwroot\env\Lib\site-packages')