如何在Azure webapp上安装bcrypt?

问题描述:

披露:首次Azure体验如何在Azure webapp上安装bcrypt?

我正在将Azure Web应用部署到Flask应用。所有的部署步骤都很好,直到我打开bcrypt软件包安装并失败。

基于错误日志输出大量的研究后,我发现我可能需要安装bcrypt使用驾驶室(* .WHL)

我从here

  • bcrypt-3.1下载下面的文件的3.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的。世界高血压联盟,因为它不符合 这条巨蟒

这是一个令人困惑的消息,因为车轮是为Python 2.7

兼容

因为我的Flask应用程序在我的Linux和Windows开发机器上都能正常工作,所以我继续在Windows计算机上创建自己的brypt wheel文件,该文件在Azure上运行相同的Python版本。我上传的新.whl,重做上述步骤,我仍然得到同样的错误信息

附加说明:

  • Azure的控制台上蟒-V返回2.7.8
  • 蟒蛇-V同时的virtualenv是激活也返回2.7.8
  • Azure门户>应用程序设置显示“Python版本2.7”和“平台32位”。
  • 部署之后,将安装requirements.txt中的所有软件包,但bcrypt除外。
  • 访问的网页给出了一个500错误(我希望由于缺少LIB)
  • 我删除了的virtualenv和GIT与--find-links wheelhouse在requirements.txt顶推回购的规定here
    但是,我得到一个Unable to find vcvarsall.bat错误。这就是为什么我试图通过轮子手动安装
  • 我删除了整个virtualenv,将所有需要的软件包的wheel文件上传到\ repository \ wheelhouse,并将--no-index添加到我的pip install命令中。除了bcrypt,所有东西都会被安装。

  • 我试过bcrypt==3.1.1bcrypt==3.1.0,只是bcrypt不指定版本,它没有任何区别。

我跑出了想法。任何人都知道什么是错的?我如何着手在Azure webapp上安装bcrypt?

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

解决方案

  • 我用我的requirements.txt文件中创建一个VIRTUALENV在Visual Studio
  • 动了我的瓶代码到Visual Studio
  • 点击发布到Azure中的webapps

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

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

这就是所有人。

您可以尝试使用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被执行