如何更改Azure Git CI部署默认的python版本

时间:2017-11-10 22:20:40

标签: django python-3.x azure azure-web-sites azure-deployment

Azure仅在应用程序设置中支持Python版本2.7和3.4,并且我通过App Service为我的django应用程序安装了更新的Python 3.6.2。我按照continuous integration with Azure & GitHub的设置进行了操作,发现当Azure运行部署命令时部署失败。下面是日志的一部分,显示Azure决定使用默认2.7甚至我指定在web.config文件中使用3.6.2

Detected requirements.txt.  You can skip Python specific steps with a .skipPythonDeployment file.
Detecting Python runtime from site configuration
Detected python-2.7
Creating python-2.7 virtual environment.
...
#(and it just continue and install the requirements.txt with pip using python-2.7 which failed)
  

Azure将确定用于其虚拟的Python版本   具有以下优先级的环境:

     
      
  1. 在根文件夹
  2. 中的runtime.txt中指定的版本   
  3. 在Web应用程序配置中由Python设置指定的版本   (您的网络应用程序的设置>应用程序设置刀片   Azure门户网站)
  4.   如果没有指定上述内容,
  5. python-2.7是默认值
  6.   

我无法使用runtime.txt指定版本,因为3.6.2不是内容的有效值。看起来Azure忽略了我的web.config,只是跳转到使用2.7作为默认值,因为没有指定上述内容。

截至目前,我不得不进入Kudu控制台并使用3.6.2手动部署我的应用程序。如何在从Github部署代码时将其设置为使用3.6.2作为默认值?

以下是我的web.config文件

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <appSettings>
    <add key="PYTHONPATH" value="D:\home\site\wwwroot"/>
    <!-- Django apps only: change the project name to match your app -->
    <add key="WSGI_HANDLER" value="django.core.wsgi.get_wsgi_application()"/>
    <add key="DJANGO_SETTINGS_MODULE" value="mysite.settings" />
    <add key="WSGI_LOG" value="D:\home\LogFiles\wfastcgi.log"/>
  </appSettings>
  <system.webServer>
    <handlers>
      <add name="PythonHandler" path="*" verb="*" modules="FastCgiModule"
           scriptProcessor="D:\home\python362x86\python.exe|D:\home\python362x86\wfastcgi.py"
           resourceType="Unspecified" requireAccess="Script"/>
    </handlers>
  </system.webServer>
</configuration>

1 个答案:

答案 0 :(得分:0)

根据我的经验,如果您在Azure Python Web应用程序中使用python Extensions,则不必在应用程序设置中选择Python版本。

enter image description here

请参考我的步骤如下:

第1步: 创建azure Web应用并添加扩展程序(此处为Python 3.6.2 x86)

enter image description here

第2步: 准备django项目并添加web.config

<强>的web.config:

<configuration>
  <appSettings>
    <add key="WSGI_HANDLER" value="django.core.wsgi.get_wsgi_application()"/>
    <add key="PYTHONPATH" value="D:\home\site\wwwroot"/>
    <add key="WSGI_LOG" value="D:\home\LogFiles\wfastcgi.log"/>
    <add key="DJANGO_SETTINGS_MODULE" value="<your project name>.settings" />
  </appSettings>
  <system.webServer>
    <handlers>
      <add name="PythonHandler" path="handler.fcgi" verb="*" modules="FastCgiModule" scriptProcessor="D:\home\python362x86\python.exe|D:\home\python362x86\wfastcgi.py" 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>
</configuration>

第3步: 将您的网站网址域添加到django项目settings.py中的ALLOWED_HOSTS

ALLOWED_HOSTS = ['***.azurewebsites.net']

第4步: 通过FTP或Git发布您的django项目。

第5步: 切换到Kudu CMD并命令cd Python362x86touch get-pip.py并复制网址https://bootstrap.pypa.io/get-pip.py的内容通过编辑按钮进入get-pip.py,然后运行python get-pip.py以安装点子工具。

enter image description here

第6步: 通过django

安装python -m pip install ***包或您需要的任何包

enter image description here

然后成功访问您的域名网址。

您也可以参考official tutorial

希望它对你有所帮助。

更新答案:

根据您提供的屏幕截图和日志,我看到应用程序在运行时检测到Python是2.7版本。

我检查KUDU上的环境变量并找到Python 2.7版本。

enter image description here

我建议您使用您使用的扩展Python版本的版本覆盖环境变量中的Python版本。

enter image description here

请再试一次。