【问题标题】:Use numpy & scipy in Azure web role在 Azure Web 角色中使用 numpy 和 scipy
【发布时间】:2014-07-12 22:42:31
【问题描述】:

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

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

是否可以将 numpy/scipy 包添加到 Azure 网站?如果是,如何?

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

谢谢

【问题讨论】:

    标签: python-2.7 azure numpy scipy


    【解决方案1】:

    我能够将 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 轮包。祝你好运!

    【讨论】:

    • 很高兴知道。我没有测试它,但看起来不错。我会试一试。谢谢。
    【解决方案2】:

    OnTheContrary 的回答非常好,但在撰写本文时,pythonlibs 网站上的轮子无法完全按照提供的方式部署到 Azure Web 应用程序。幸运的是,重命名 wheel 文件似乎解决了 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 应用部署创建 git 存储库的更多信息,请访问 here。您可以将轮子添加到 git 存储库的基本目录中,然后将每个文件名包含在 requirements.txt 文件中。
    • 在尝试将包导入 WebJob 之前,您需要确保 Web 应用的 site-packages 文件夹位于系统路径中。您可以通过在 WebJob 的 run.py 文件的开头添加以下几行来做到这一点:

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

    【讨论】:

    • Scipy 像这样与 win32 一起工作:scipy-0.18.1-cp27-none-win32.whl
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-30
    • 2020-09-24
    • 2011-10-30
    • 2014-08-29
    • 1970-01-01
    • 2015-06-04
    相关资源
    最近更新 更多