使用numpy& Azure Web角色中的scipy

时间:2014-05-23 14:11:00

标签: python-2.7 azure numpy scipy

我正在考虑将Azure网站用于Flask的Python项目。我已经有一个运行此配置的测试站点。我正在使用cPhyton 2.7; IronPhyton完全被弃用于这个项目,据我所知,Azure尚未支持它。

不好的部分是我需要添加scipy& numpy对于这个项目,这是一个不可避免的要求。据我所知,numpy和scipy是编译的非托管代码和python代码的混合,它们不是标准 Azure基础结构的一部分。

是否可以将numpy / scipy软件包添加到Azure网站?如果是,怎么样?

注意:我知道我可以使用虚拟机(天蓝色或非天蓝色),这是我的第二个选择,但我想做出明智的决定。

谢谢

2 个答案:

答案 0 :(得分:10)

我能够将Numpy添加到我的Azure Web App站点。我相信我的方法也适用于SciPy。

我假设您有一个本地存储库(我正在使用GIT)并将其上传到您的Azure站点。我正在使用Django,并且在基础中有一个名为requirements.txt的文件,我打赌它也适用于Flask。此文件的每一行都包含要添加到安装中的包。

起初我只是添加一行" Numpy"它和Azure发现了一个软件包并尝试安装,但是失败了。所以我下次尝试下载了一个" wheel"来自这个网站的.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轮组。祝你好运!

答案 1 :(得分:3)

OnTheContrary的答案非常好,但截至撰写本文时,pythonlibs网站上的轮子无法完全按照提供的方式部署到Azure Web App。幸运的是,重命名轮文件似乎解决了numpy,pandas和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')]

pythonlibs中的numpy-1.11.2rc1+mkl-cp34-cp34m-win32.whl文件将解析为(' cp34',' cp34m',' win32')因此会不受支持。幸运的是,可以通过将其重命名为numpy-1.11.2rc1+mkl-cp34-none-win32.whl来部署轮子。类似的修改适用于pandasscipy包。

此外,还有一些关于OnTheContrary建议方法的澄清说明:

  • 可以找到有关为Web App部署创建git仓库的更多信息here。您可以将轮子添加到git仓库的基本目录中,然后在requirements.txt文件中包含每个文件名。
  • 在尝试导入WebJob中的软件包之前,您需要确保Web App的site-packages文件夹位于系统路径中。您可以通过在WebJob的run.py文件的开头添加以下行来执行此操作:

    import sys, os
    sys.path.append('D:\\home\\site\\wwwroot\\env\\Lib\\site-packages')