在 web.config 中为 IIS 网络服务器激活 conda 环境
Activate a conda environment in web.config for IIS webserver
我的 Flask 应用程序在 D:\Applications\AccidentIdClassifier\flask_app.py
中并且包含一个名为 app
的 Flask 应用程序。我可以 运行 在我的本地系统上运行良好。
我设置了一个要用于此应用程序的 Conda 环境。我不确定如何获取 web.config
文件来引用必要的 conda 环境。我刚开始只是将 WSGI_HANDLER
设置为 flask_app.app
但我收到一个关于无法导入 numpy dll 的错误,我认为这与未激活的 venv 有关。
我看到一些关于使用 ptvs_virtualenv_proxy.handler
作为 WSGI_HANDLER
值然后使用 WSGI_ALT_VIRTUALENV_HANDLER
和 WSGI_ALT_VIRTUALENV_ACTIVATE_THIS
的讨论,但我不知道从哪里获得 activate_this.py
而且我不确定是否需要做任何事情来为 ptvs_virtualenv_proxy.handler
启动泵
这是我目前拥有的web.config
(不起作用)
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<handlers>
<remove name="Python27_via_FastCGI" />
<remove name="Python34_via_FastCGI" />
<add name="Python FastCGI" path="*" verb="*" modules="FastCgiModule"
scriptProcessor="C:\ProgramData\Anaconda3\python.exe|C:\ProgramData\Anaconda3\Lib\site-packages\wfastcgi.py"
resourceType="Unspecified" requireAccess="Script" />
</handlers>
</system.webServer>
<appSettings>
<!-- Required settings -->
<add key="WSGI_HANDLER" value="ptvs_virtualenv_proxy.handler" />
<add key="WSGI_ALT_VIRTUALENV_ACTIVATE_THIS" value="c:\inetpub\pyroot\default\env\Scripts\activate_this.py" />
<add key="WSGI_ALT_VIRTUALENV_HANDLER" value="flask_app.app" />
<add key="PYTHONPATH" value="D:\Applications\AccidentIdClassifier" />
</appSettings>
<system.web>
<identity impersonate="false" />
</system.web>
</configuration>
我最终在 this 问题和答案上绊倒了。我尝试使用 Python 3.6.5 创建一个新的 conda 虚拟环境,然后将我的 web.config
调整到新的 python.exe
和 wfastcgi.py
位置,但仍然出现各种错误。实验上,我删除了 venv 属性并最终得到
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<handlers>
<remove name="Python27_via_FastCGI" />
<remove name="Python34_via_FastCGI" />
<add name="Python FastCGI" path="*" verb="*" modules="FastCgiModule"
scriptProcessor="C:\ProgramData\Anaconda3\envs\AccidentId\python.exe|C:\ProgramData\Anaconda3\envs\AccidentId\Lib\site-packages\wfastcgi.py"
resourceType="Unspecified" requireAccess="Script" />
</handlers>
</system.webServer>
<appSettings>
<!-- Required settings -->
<add key="PYTHONPATH" value="D:\Applications\AccidentIdClassifier" />
<add key="WSGI_HANDLER" value="flask_app.app" />
</appSettings>
<system.web>
<identity impersonate="false" />
</system.web>
</configuration>
这似乎工作正常。
我能得出的唯一结论是,IIS 一直在努力解决 python 3.7 的问题,而 3.6.5 使其正常工作。 Anaconda 似乎不介意直接连接到 python 二进制文件而不用担心虚拟环境,所以这似乎使在那个方向上的努力变得多余。
我的 Flask 应用程序在 D:\Applications\AccidentIdClassifier\flask_app.py
中并且包含一个名为 app
的 Flask 应用程序。我可以 运行 在我的本地系统上运行良好。
我设置了一个要用于此应用程序的 Conda 环境。我不确定如何获取 web.config
文件来引用必要的 conda 环境。我刚开始只是将 WSGI_HANDLER
设置为 flask_app.app
但我收到一个关于无法导入 numpy dll 的错误,我认为这与未激活的 venv 有关。
我看到一些关于使用 ptvs_virtualenv_proxy.handler
作为 WSGI_HANDLER
值然后使用 WSGI_ALT_VIRTUALENV_HANDLER
和 WSGI_ALT_VIRTUALENV_ACTIVATE_THIS
的讨论,但我不知道从哪里获得 activate_this.py
而且我不确定是否需要做任何事情来为 ptvs_virtualenv_proxy.handler
这是我目前拥有的web.config
(不起作用)
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<handlers>
<remove name="Python27_via_FastCGI" />
<remove name="Python34_via_FastCGI" />
<add name="Python FastCGI" path="*" verb="*" modules="FastCgiModule"
scriptProcessor="C:\ProgramData\Anaconda3\python.exe|C:\ProgramData\Anaconda3\Lib\site-packages\wfastcgi.py"
resourceType="Unspecified" requireAccess="Script" />
</handlers>
</system.webServer>
<appSettings>
<!-- Required settings -->
<add key="WSGI_HANDLER" value="ptvs_virtualenv_proxy.handler" />
<add key="WSGI_ALT_VIRTUALENV_ACTIVATE_THIS" value="c:\inetpub\pyroot\default\env\Scripts\activate_this.py" />
<add key="WSGI_ALT_VIRTUALENV_HANDLER" value="flask_app.app" />
<add key="PYTHONPATH" value="D:\Applications\AccidentIdClassifier" />
</appSettings>
<system.web>
<identity impersonate="false" />
</system.web>
</configuration>
我最终在 this 问题和答案上绊倒了。我尝试使用 Python 3.6.5 创建一个新的 conda 虚拟环境,然后将我的 web.config
调整到新的 python.exe
和 wfastcgi.py
位置,但仍然出现各种错误。实验上,我删除了 venv 属性并最终得到
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<handlers>
<remove name="Python27_via_FastCGI" />
<remove name="Python34_via_FastCGI" />
<add name="Python FastCGI" path="*" verb="*" modules="FastCgiModule"
scriptProcessor="C:\ProgramData\Anaconda3\envs\AccidentId\python.exe|C:\ProgramData\Anaconda3\envs\AccidentId\Lib\site-packages\wfastcgi.py"
resourceType="Unspecified" requireAccess="Script" />
</handlers>
</system.webServer>
<appSettings>
<!-- Required settings -->
<add key="PYTHONPATH" value="D:\Applications\AccidentIdClassifier" />
<add key="WSGI_HANDLER" value="flask_app.app" />
</appSettings>
<system.web>
<identity impersonate="false" />
</system.web>
</configuration>
这似乎工作正常。
我能得出的唯一结论是,IIS 一直在努力解决 python 3.7 的问题,而 3.6.5 使其正常工作。 Anaconda 似乎不介意直接连接到 python 二进制文件而不用担心虚拟环境,所以这似乎使在那个方向上的努力变得多余。