【问题标题】:How to pip install bcrypt on Azure webapp?如何在 Azure webapp 上安装 bcrypt?
【发布时间】:2016-10-04 23:22:21
【问题描述】:

披露:第一次 Azure 体验

我正在将 Flask 应用程序部署到 Azure Webapp。所有部署步骤都很好,直到我点击 bcrypt 包安装并且它失败了。

根据错误日志输出进行大量研究后,我发现我可能需要使用 Wheelhouse (*.WHL) 安装 bcrypt

我从here下载了以下文件

  • bcrypt-3.1.0-cp27-cp27m-win32.whl
  • bcrypt-3.1.0-cp27-cp27m-win_amd64.whl

然后我把它们复制到D:\home\site\repository\wheelhouse

然后,我通过 KUDU 激活 virtualenv 并运行以下命令:

d:\home\site\wwwroot\env\scripts\pip install -r requirements.txt --find-links d:\home\site\repository\wheelhouse

我没有收到任何消息或任何日志输出。当我运行 pip freeze > tmp.txt 时,我得到一个空白文件。

但是当我运行d:\python27\scripts\pip install -r requirements.txt --find-links d:\home\site\repository\wheelhouse

它开始安装包,直到它进入 bcrypt 并显示以下消息:

跳过 bcrypt-3.1.0-cp27-cp27m-win32.whl 因为它不兼容 这个Python

这是一个令人困惑的消息,因为轮子适用于 Python 2.7

由于我的 Flask 应用程序在我的 Linux 和 Windows 开发机器上都能正常运行,我继续在我的 Windows 计算机上创建了自己的 brypt 轮文件,该文件在 Azure 上运行相同的 Python 版本。我上传了新的.whl,重新执行了上述步骤,我仍然收到相同的错误消息

补充说明:

  • Azure 控制台上的 python -V 返回 2.7.8
  • python -V 激活 virtualenv 时也返回 2.7.8
  • Azure 门户 > 应用程序设置显示“Python version 2.7”和“Platform 32bits”。
  • 部署后,requirements.txt中的所有包都安装好了,除了bcrypt。
  • 访问网页会出现 500 错误(我预计这是由于缺少 lib)
  • 我删除了 virtualenv,GIT 将 repo 推送到了 requirements.txt 顶部的 --find-links wheelhouse,如 here 所述。
    但是,我收到 Unable to find vcvarsall.bat 错误。这就是我尝试通过 wheel 手动安装的原因
  • 我删除了整个 virtualenv,将所有需要的包的 Wheel 文件上传到 \repository\wheelhouse,并在我的 pip install 命令中添加了--no-index。除 bcrypt 外,所有内容都已安装。

  • 我尝试了bcrypt==3.1.1bcrypt==3.1.0bcrypt,但没有指定版本,但没有任何区别。

我的想法用完了。有谁知道出了什么问题?如何在 Azure webapp 上安装 bcrypt?

【问题讨论】:

    标签: python azure pip virtualenv bcrypt


    【解决方案1】:

    我终于能够让 Flask 应用程序在 Azure Webapps 上运行。 不幸的是,我无法使用我常用的开发工具来做到这一点。

    解决方案

    • 我使用 requirements.txt 文件在 Visual Studio 中创建了一个 VirtualEnv
    • 将我的 Flask 代码移至 Visual Studio
    • 点击发布到 Azure Webapps

    它会做它做的事情,一旦完成,您可能仍然会收到 500 错误。 如果是这种情况,请使用 KUDU 并查看您的 web.config 文件并修改 WSGI_ALT_VIRTUALENV_HANDLER 值以匹配您的 Flask 应用名称。

    这是我能够正确安装 bcrypt 以使我的 Flask 应用程序正常工作的唯一方法。我希望这可以节省一些宝贵的时间。

    就是这样。

    【讨论】:

      【解决方案2】:

      您可以尝试使用 easy_install 来安装 pip 未能安装的依赖项。我所做的是:

      1. 进入 KUDU 调试控制台。这列在开发工具下
      2. 尝试执行env\scripts\pip install -r requirements.txt
      3. 对于每个失败的依赖项(如 bcrypt),尝试通过env\scripts\easy_install bcrypt==3.1.0 安装它

      您也可以尝试通过编辑 deploy.cmd 文件来自动执行此操作。这样在pip 失败的任何时候,easy_install 都会被执行

      【讨论】:

      • 不,这对我不起作用。还是一样的错误
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-24
      • 2016-03-03
      • 1970-01-01
      • 2014-11-09
      • 2021-05-24
      • 2018-03-16
      • 1970-01-01
      相关资源
      最近更新 更多