如何在 Azure webapp 上安装 bcrypt?
How to pip install bcrypt on Azure webapp?
披露:第一次体验 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
我没有收到消息或任何日志输出。当我 运行 a 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
这是一个令人困惑的信息,因为轮子是为 Python 2.7
因为我的 Flask 应用程序在我的 Linux 和 Windows 开发机器上都运行良好,我继续在我的 Windows 计算机上创建了我自己的 brypt wheel 文件,运行与 Azure 上的 Python 版本相同。我上传了新的 .whl
,重新执行了上述步骤,但我仍然收到相同的错误消息
补充说明:
- python -V 在 Azure 控制台上 returns 2.7.8
- python -V 同时激活 virtualenv returns 2.7.8
- Azure 门户 > 应用程序设置显示 "Python version 2.7" 和 "Platform 32bits"。
- 部署后,requirements.txt 中的所有软件包都已安装,但 bcrypt 除外。
- 访问网页时出现 500 错误(我预计这是由于缺少库)
- 我删除了 virtualenv 并且 GIT 将带有
--find-links wheelhouse
的回购推送到 requirements.txt 的顶部,如 here 所述。
但是,我收到 Unable to find vcvarsall.bat
错误。这就是我尝试通过 wheel 手动安装的原因
我删除了整个 virtualenv,将所有必需包的 wheel 文件上传到 \repository\wheelhouse 并在我的 pip 安装命令中添加了 --no-index
。除 bcrypt.
之外的所有内容都已安装
我尝试了 bcrypt==3.1.1
、bcrypt==3.1.0
和 bcrypt
,但没有指定版本,这没有任何区别。
我运行没主意了。任何人都知道怎么了?如何在 Azure webapp 上安装 bcrypt?
我终于能够让 Flask 应用程序在 Azure Webapps 上运行。
不幸的是,我无法使用我常用的开发工具来做到这一点。
解决方法:
- 我在 Visual Studio 中使用我的
requirements.txt
文件 创建了一个 VirtualEnv
- 将我的 Flask 代码移至 Visual Studio
- 单击“发布到 Azure Webapps”
它会做它会做的事情,一旦完成,您可能仍然会收到 500 错误。
如果是这种情况,请使用 KUDU 并查看您的 web.config
文件并修改 WSGI_ALT_VIRTUALENV_HANDLER
值以匹配您的 Flask 应用名称。
这是我能够 bcrypt
正确安装 Flask 应用程序的唯一方法。我希望这可以节省一些宝贵的时间。
这就是所有的人。
您本可以尝试使用 easy_install
安装依赖项,但 pip
未能成功。我所做的是:
- 进入 KUDU 调试控制台。这列在开发工具
下
- 尝试执行
env\scripts\pip install -r requirements.txt
- 对于每个失败的依赖项(如 bcrypt),尝试通过
env\scripts\easy_install bcrypt==3.1.0
安装它
您也可以尝试通过编辑 deploy.cmd
文件来自动执行此操作。这样在 pip
失败的任何时候,都会执行 easy_install
披露:第一次体验 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
我没有收到消息或任何日志输出。当我 运行 a 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
这是一个令人困惑的信息,因为轮子是为 Python 2.7
因为我的 Flask 应用程序在我的 Linux 和 Windows 开发机器上都运行良好,我继续在我的 Windows 计算机上创建了我自己的 brypt wheel 文件,运行与 Azure 上的 Python 版本相同。我上传了新的 .whl
,重新执行了上述步骤,但我仍然收到相同的错误消息
补充说明:
- python -V 在 Azure 控制台上 returns 2.7.8
- python -V 同时激活 virtualenv returns 2.7.8
- Azure 门户 > 应用程序设置显示 "Python version 2.7" 和 "Platform 32bits"。
- 部署后,requirements.txt 中的所有软件包都已安装,但 bcrypt 除外。
- 访问网页时出现 500 错误(我预计这是由于缺少库)
- 我删除了 virtualenv 并且 GIT 将带有
--find-links wheelhouse
的回购推送到 requirements.txt 的顶部,如 here 所述。
但是,我收到Unable to find vcvarsall.bat
错误。这就是我尝试通过 wheel 手动安装的原因
我删除了整个 virtualenv,将所有必需包的 wheel 文件上传到 \repository\wheelhouse 并在我的 pip 安装命令中添加了
--no-index
。除 bcrypt. 之外的所有内容都已安装
我尝试了
bcrypt==3.1.1
、bcrypt==3.1.0
和bcrypt
,但没有指定版本,这没有任何区别。
我运行没主意了。任何人都知道怎么了?如何在 Azure webapp 上安装 bcrypt?
我终于能够让 Flask 应用程序在 Azure Webapps 上运行。 不幸的是,我无法使用我常用的开发工具来做到这一点。
解决方法:
- 我在 Visual Studio 中使用我的
requirements.txt
文件 创建了一个 VirtualEnv
- 将我的 Flask 代码移至 Visual Studio
- 单击“发布到 Azure Webapps”
它会做它会做的事情,一旦完成,您可能仍然会收到 500 错误。
如果是这种情况,请使用 KUDU 并查看您的 web.config
文件并修改 WSGI_ALT_VIRTUALENV_HANDLER
值以匹配您的 Flask 应用名称。
这是我能够 bcrypt
正确安装 Flask 应用程序的唯一方法。我希望这可以节省一些宝贵的时间。
这就是所有的人。
您本可以尝试使用 easy_install
安装依赖项,但 pip
未能成功。我所做的是:
- 进入 KUDU 调试控制台。这列在开发工具 下
- 尝试执行
env\scripts\pip install -r requirements.txt
- 对于每个失败的依赖项(如 bcrypt),尝试通过
env\scripts\easy_install bcrypt==3.1.0
安装它
您也可以尝试通过编辑 deploy.cmd
文件来自动执行此操作。这样在 pip
失败的任何时候,都会执行 easy_install