python - 在 web.config 中为 IIS 网络服务器激活 conda 环境
问题描述
我的烧瓶应用程序在D:\Applications\AccidentIdClassifier\flask_app.py
其中并包含一个名为app
. 我可以在我的本地系统上正常运行它。
我设置了一个我想用于这个应用程序的 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>
解决方案
我最终偶然发现了这个问题和答案。我尝试使用 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 二进制文件而不用担心更多的虚拟环境,所以这似乎使这方面的努力变得多余。
推荐阅读
- vector - Lisp数据结构使用点对中的向量
- java - 运行整个junit集成测试类时无法在Java应用程序中打断点
- sql - 使 API 获取请求并将响应数据存储到 sql db
- javascript - 锯齿交易处理器不工作
- terraform - 版本 0.12+ 中的 Terraform 列表
- python - 如何使用相对路径提取href的绝对URL?
- bash - 如何使用 bash 从特定行中删除特定模式
- python - 使用 pandas 计算存款和取款的余额列
- python - pyasn1 与不定长结构
- angular - 根据用户权限从服务器动态加载模块到本机/混合移动应用程序