Azure / Kudu обновляет python PATH с 2.7 до 3.6 - PullRequest
0 голосов
/ 21 июня 2019

Я целый день пытался опубликовать свой Django Project из Visual Studio, и я думаю, что решил проблему. Когда он автоматически создал среду, он установил Python 2.7. Я использую Django 2.2+, который работает только на Python 3+.

Python 3.6 путь:

D:\home\python364x64>  

Я могу заставить среду использовать 3.6 для сеанса, но не могу понять, как сделать изменение постоянным с помощью Kudu Powershell или портала Azure.

Я явно упускаю что-то очень простое, но ни одна из документации не охватывает эту проблему

Это также файл web.config. Я не знаю, поможет ли это вообще, поэтому добавлю, так как лучше иметь слишком много информации, чем недостаточно:

<configuration>

  <system.webServer>
    <handlers>
      <add name="PythonHandler" path="handler.fcgi" verb="*" modules="FastCgiModule" scriptProcessor="D:\home\python364x64\Scripts\pip3.exe" resourceType="Unspecified" requireAccess="Script"/>
    </handlers>
    <rewrite>
      <rules>
        <rule name="Static Files" stopProcessing="true">
          <conditions>
            <add input="true" pattern="false" />
          </conditions>
        </rule>
        <rule name="Configure Python" stopProcessing="true">
          <match url="(.*)" ignoreCase="false" />
          <conditions>
            <add input="{REQUEST_URI}" pattern="^/static/.*" ignoreCase="true" negate="true" />
          </conditions>
          <action type="Rewrite" url="handler.fcgi/{R:1}" appendQueryString="true" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>

  <system.webServer>
    <handlers>
      <add name="PythonHandler" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified"/>
    </handlers>
    <httpPlatform processPath="D:\home\python364x64\Scripts\pip3.exe"
                  arguments="D:\home\site\wwwroot\runserver.py --port %HTTP_PLATFORM_PORT%"
                  stdoutLogEnabled="true"
                  stdoutLogFile="D:\home\LogFiles\python.log"
                  startupTimeLimit="60"
                  processesPerApplication="16">
      <environmentVariables>
        <environmentVariable name="SERVER_PORT" value="%HTTP_PLATFORM_PORT%" />
      </environmentVariables>
    </httpPlatform>
  </system.webServer>

  <appSettings>
    <add key="WSGI_HANDLER" value="django.core.wsgi.get_wsgi_application()"/>
    <add key="PYTHONPATH" value="D:\homepython364x64\Scripts"/>
    <add key="WSGI_LOG" value="D:\home\LogFiles\wfastcgi.log"/>
    <add key="DJANGO_SETTINGS_MODULE" value="FTAData.settings" />
  </appSettings>
  <system.webServer>
    <handlers>
      <add name="PythonHandler" path="*" verb="*" modules="FastCgiModule"
           scriptProcessor="D:\home\python364x64\Scripts\pip3.exe"
           resourceType="Unspecified" requireAccess="Script"/>
    </handlers>
  </system.webServer>
</configuration>

applicationHost.xtd:

<?xml version="1.0"?> 
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"> 
  <system.webServer> 
    <runtime xdt:Transform="InsertIfMissing">
      <environmentVariables xdt:Transform="InsertIfMissing">
        <add name="PATH" value="D:\home\python364x64\Scripts" xdt:Locator="Match(name)" xdt:Transform="InsertIfMissing" />    
      </environmentVariables>
    </runtime> 
  </system.webServer> 
</configuration> 

Edit: Я забыл упомянуть, я запустил файл требований в папке Python3.6, и он прошел отлично. Единственное сообщение об ошибке, которое я получил, было переменной PATH.

Кроме того, у меня отлично работает начальная целевая страница и непрерывная доставка (проверено путем изменения текста на целевой странице по умолчанию, сохранения и обновления в браузере)

Кроме того, это то, что появляется в Куду под PATH:

D:\home\site\deployments\tools
D:\Program Files (x86)\SiteExtensions\Kudu\82.10503.3890\bin\Scripts
D:\Program Files (x86)\MSBuild\14.0\Bin
D:\Program Files\Git\cmd
D:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow
D:\Program Files (x86)\Microsoft SQL Server\110\Tools\Binn
D:\Program Files (x86)\Microsoft SDKs\F#\3.1\Framework\v4.0
D:\Program Files\Git\bin
D:\Program Files\Git\usr\bin
D:\Program Files\Git\mingw64\bin
D:\Program Files (x86)\npm\3.10.8
C:\DWASFiles\Sites\#1FTAData\AppData\npm
D:\Program Files (x86)\bower\1.7.9
D:\Program Files (x86)\grunt\0.1.13
D:\Program Files (x86)\gulp\3.9.0.1
D:\Program Files (x86)\funcpack\1.0.0
D:\Program Files (x86)\nodejs\6.9.1
D:\Windows\system32
D:\Windows
D:\Windows\System32\Wbem
D:\Windows\System32\WindowsPowerShell\v1.0\
D:\Users\Administrator\AppData\Local\Microsoft\WindowsApps
D:\Program Files (x86)\dotnet
D:\Windows\system32\config\systemprofile\AppData\Local\Microsoft\WindowsApps
D:\Program Files (x86)\Git\cmd
D:\Program Files (x86)\PHP\v5.6
D:\Python27

1 Ответ

1 голос
/ 21 июня 2019

Во-первых, вам нужно установить python с версией, вы можете перейти к расширению или установить пакеты.

Перейдите к вашему расширению в приложении Azure, выберите добавить расширение и выберите нужную версию.Потому что у вас уже есть путь к сеансу, я думаю, что вы установили Python.Вы можете напрямую перейти к настройке web.config.

enter image description here

Вы можете установить HttpPlatform (рекомендуется) или FastCGI, ниже приведен пример HttpPlatform.

<configuration>
  <system.webServer>
    <handlers>
      <add name="PythonHandler" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified"/>
    </handlers>
    <httpPlatform processPath="D:\home\Python361x64\python.exe"
                  arguments="D:\home\site\wwwroot\runserver.py --port %HTTP_PLATFORM_PORT%"
                  stdoutLogEnabled="true"
                  stdoutLogFile="D:\home\LogFiles\python.log"
                  startupTimeLimit="60"
                  processesPerApplication="16">
      <environmentVariables>
        <environmentVariable name="SERVER_PORT" value="%HTTP_PLATFORM_PORT%" />
      </environmentVariables>
    </httpPlatform>
  </system.webServer>
</configuration>

Для получения дополнительной информации см. Официальный документ: настройка среды Python в приложении Azure .

Обновление: Если способ web.config не сработал, перейдите в раздел «Конфигурация» в приложении Azure -> Сопоставления путей -> + новый обработчик

расширение: fastCgi

процессор: D:\home\python364x64\python.exe

аргументы: D:\home\python364x64\wfastcgi.py

Сохраните ваши настройки.

enter image description here

Перезапустите приложение и перейдите кваше приложение куду, проверьте работоспособность настроек.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...