【问题标题】:Deploying Python Flask on Azure Get error 500在 Azure 上部署 Python Flask 得到错误 500
【发布时间】:2017-08-27 23:35:22
【问题描述】:

在接下来的几个小时里,我尝试在 Microsoft azure 平台上使用 flask 部署 Python。

我使用了新应用“flask”,分配给他们的服务器。由 git 部署。 部署完成后(显示 Unable to find vcvarsall.bat) 然后我设置了我使用 python 3.4 版本的选项并修复了它。

部署成功后,我尝试查看该站点并得到: 加载资源失败:服务器响应状态为 500 (Internal Server Error)

我是部署的初学者,我到处搜索。我真的希望有人能帮我找到正确的答案。

非常感谢。

【问题讨论】:

  • 能否请您发布内部服务器错误异常跟踪日志的更多详细信息,让我帮助您?您可以在 Kudu 中找到日志。
  • 这是 python 日志:错误:需要 Microsoft Visual C++ 9.0(无法找到 vcvarsall.bat)。从aka.ms/vcpython27 (file).read().replace('\r\n', '\n'), file, 'exec') 获取它" 安装 --record d:\local\temp\pip-pychep-record\install-record.txt --single-version-externally-managed --compile --install-headers D:\home\site\wwwroot\env \include\site\python2.7 在 D:\home\site\wwwroot\env\build\lxml 中失败,错误代码为 1 我通过在设置中使用 Python 3.4 修复了它,也许我不应该这样做?
  • 运行 build_ext 构建“lxml.etree”扩展错误:需要 Microsoft Visual C++ 9.0(无法找到 vcvarsall.bat)。从aka.ms/vcpython27获取这是部署的错误

标签: python azure flask deployment


【解决方案1】:

基于我对此blog 的研究,其中提到了关于您的问题的以下内容:

当您看到“无法找到 vcvarsall.bat”时,表示您正在 安装具有扩展模块的包,但只有源 代码。 “vcvarsall.bat”是 Visual Studio 中编译器的一部分,它是 编译模块所必需的。

我认为您的问题是因为在部署到 azure 的烧瓶项目期间,pip 安装 lxml 库时出现问题。正如 document 中提到的,lxml 库是用 C 在安装之前需要编译器

很遗憾,在 Azure 应用服务中运行 Web 应用的计算机上没有可用的编译器。因此,您需要在本地进行此编译。 您可以按照以下步骤操作:

第一步:使用pip wheel命令行生成lxml包的.whl文件。另外,您可以直接下载生成的.whl文件here.

Step2:在requments.txt文件同级目录下创建wheelhouse文件夹,将.whl文件放到wheelhouse文件夹中。

第 3 步:编辑您的 requirements.txt,在顶部添加 --find-links 选项。

--find-links wheelhouse
lxml==3.8.0

Step4:将你的flask项目部署到azure。

更多细节请参考official documentwheel document中的疑难解答-包安装章节。

希望对你有所帮助。

【讨论】: