如何在Azure webapp上pip安装bcrypt?

2024-06-25 23:39:52 发布

您现在位置:Python中文网/ 问答频道 /正文

披露:首次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时出现以下错误:

Skipping bcrypt-3.1.0-cp27-cp27m-win32.whl because it is not compatible with this Python

这是一个令人困惑的消息,因为wheel是为python2.7设计的

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

附加说明:

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

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

我没有主意了。有人知道怎么了?如何在Azure webapp上安装bcrypt?在


Tags: pip文件txt应用程序homevirtualenvrepository部署
2条回答

我终于可以让Flask应用在Azure Webapps上工作了。 不幸的是,我不能用我的工具。在

解决方案

  • 我使用requirements.txt文件在visualstudio中创建了一个VirtualEnv
  • 把我的烧瓶代码移到了visualstudio
  • 单击“发布到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就会被执行

相关问题 更多 >