如何在Azure webapp上安装bcrypt?

时间:2016-10-04 23:22:21

标签: python azure pip virtualenv bcrypt

披露:首次Azure体验

我正在向Azure Webapp部署Flask应用。所有部署步骤都没问题,直到我点击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 wheel文件,该文件在Azure上运行相同的Python版本。我上传了新的.whl,重新执行了上述步骤,我仍然收到相同的错误消息

额外说明:

    Azure控制台上的
  • python -V返回2.7.8
  • python -V虽然virtualenv被激活也返回2.7.8
  • Azure门户>应用程序设置显示" Python版本2.7"和#34;平台32位"。
  • 部署后,除了bcrypt。
  • 外,还安装了requirements.txt中的所有软件包
  • 访问该网页会出现500错误(我希望由于缺少lib而导致)
  • 我删除了virtualenv,GIT按照here所述,在requirements.txt顶部按--find-links wheelhouse推送了回购。 但是,我收到Unable to find vcvarsall.bat错误。这就是我尝试通过滚轮手动安装的原因
  • 我删除了整个virtualenv,将所有必需包的wheel文件上传到\ repository \ wheelhouse,并将--no-index添加到我的pip install命令。除了bcrypt之外,所有东西都已安装。

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

我没有想法了。谁知道什么是错的?如何在Azure webapp上安装bcrypt?

2 个答案:

答案 0 :(得分:0)

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

<强>解决方案

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

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

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

那是所有人。

答案 1 :(得分:0)

您可能已尝试使用easy_install来安装pip未能执行此操作的依赖项。我做的是:

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

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