Azure上的Python Flask应用程序在从vs2015升级到2017后被打破

2024-05-15 00:28:37 发布

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

我们在Azure中有一个Python flask应用程序作为应用程序服务运行。我们最近将我们的解决方案升级到VS2017。这改变了python项目中的一些配置文件,现在当我们发布时,我们得到:

HTTP Error 500.0 - Internal Server Error
 scriptProcessor could not be found in  application configuration

Detailed Error Information:
Module     FastCgiModule
Notification       ExecuteRequestHandler
Handler    PythonHandler
Error Code     0x80070585
Requested URL      http://OcvCluster-int__b155:80/handler.fcgi/

Physical Path      D:\home\site\wwwroot\handler.fcgi\
Logon Method       Anonymous
Logon User     Anonymous
Request Tracing Directory      D:\home\LogFiles

如果我回到旧版本(升级前),我可以从2015年开始发布。但是,我无法在2015年打开最新的主控形状,因此我无法发布我们服务中需要的更改。在

我花了整整一天的时间浏览了一些文章,比如:
https://docs.microsoft.com/en-us/visualstudio/python/managing-python-on-azure-app-servicehttps://docs.microsoft.com/en-us/visualstudio/python/publishing-to-azure

尝试用reg更新我的web.config文件. 在

这里有关于升级路径的信息吗?我们破产了。让我困惑的事情:

•关于将Flask应用程序发布到VS的教程指出,您需要在应用程序服务上安装Python作为扩展。是新的吗?我们以前从未这样做过。
•我们在env文件夹中有许多自定义库。在VS2015中,这些都是作为发布过程的一部分上载的。当我从VS2017发布时,我没有看到这种情况发生(尽管以前的版本中仍然存在)
•一些论坛帖子谈到必须在应用程序配置. 我们的应用程序没有应用程序配置.

这是我的web.config文件(上面的评论表明了我一直在试验的地方)。在

^{pr2}$

谢谢, ~约翰


Tags: httpscom应用程序docshomeerrormicrosoften
1条回答
网友
1楼 · 发布于 2024-05-15 00:28:37

正如您在Managing Python on Azure App Service中发现的:

尽管默认情况下,App Service在服务器的根文件夹中安装了python2.7和python3.4,但您无法在这些环境中自定义或安装包。在

enter image description here

因此,Azure应用服务建议您现在就依赖site extension。在

据我所知,我们可以在requirements.txt文件中列出程序所依赖的python包的版本。当项目部署到Azure时,这些包将被下载到env文件夹中。在

但是,现在这不适用于site extensions。您可以在KUDU console上安装包。请参考我之前工作的步骤。在

步骤1:创建azure web应用程序并添加扩展(这里是Python3.6.1 x64)

enter image description here

步骤2:发布您的flask项目并添加web.config。在

在web.config文件公司名称:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <appSettings>
    <add key="WSGI_HANDLER" value="<Your Project Name>.app"/>
    <add key="PYTHONPATH" value="D:\home\site\wwwroot"/>
    <add key="WSGI_LOG" value="D:\home\LogFiles\wfastcgi.log"/>
  </appSettings>
  <system.webServer>
    <handlers>
      <add name="PythonHandler" path="*" verb="*" modules="FastCgiModule" scriptProcessor="D:\home\Python361x64\python.exe|D:\home\Python361x64\wfastcgi.py" resourceType="Unspecified" requireAccess="Script"/>
    </handlers>
  </system.webServer>
</configuration>

步骤3:切换到Kudu命令和命令cd Python361x64touch get-pip.py,通过编辑按钮将url https://bootstrap.pypa.io/get-pip.py复制到get-pip.py中,然后运行python get-pip.py来安装pip工具。在

enter image description here

步骤4:通过python-mpipinstallpyodbc安装pyodbc包或任何需要的包

enter image description here

另外,我注意到在web.config文件不包括应用程序的根路径D:\home\site\wwwrootPYTHONPATH的值可以自由扩展,但必须包含应用程序的根。在

您需要检查映射到scriptProcessor的路径中的Python解释器是否存在。在

希望对你有帮助。有什么问题,请告诉我。在

相关问题 更多 >

    热门问题