Активируйте среду conda в web.config для веб-сервера IIS. - PullRequest
0 голосов
/ 11 марта 2020

Мое flask приложение находится в D:\Applications\AccidentIdClassifier\flask_app.py и содержит приложение flask с именем 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>

1 Ответ

0 голосов
/ 12 марта 2020

В итоге я наткнулся на этот вопрос и ответ. Я попытался создать новую виртуальную среду conda, используя Python 3.6.5, а затем настроил мои 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, не беспокоясь о виртуальных средах, так что, похоже, усилия в этом направлении излишни.

...