在 Azure Web role 中使用 numpy & scipy



我正在考虑使用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来部署轮子。类似的修改适用于pandasscipy包。

此外,关于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')
    

最新更新