如何更改 Azure Git CI 部署默认 python 版本
How to change Azure Git CI deployment default python version
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 will determine the version of Python to use for its virtual
environment with the following priority:
- version specified in runtime.txt in the root folder
- version specified by Python setting in the web app configuration
(the Settings > Application Settings blade for your web app in the
Azure Portal)
- python-2.7 is the default if none of the above are specified
我无法使用 runtime.txt
指定版本,因为 3.6.2 不是内容的有效值。看起来 Azure 忽略了我的 web.config
,只是跳转到使用 2.7 作为默认值,因为指定了上面的 none。
截至目前,我必须进入 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>
根据我的经验,如果您在 Azure Python 网络应用程序中使用 python 扩展,则不必在应用程序设置中选择 Python 版本。
请参考我做的步骤如下:
第 1 步: 创建 azure web 应用程序并添加扩展(这里是 Python 3.6.2 x86)
第 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 步: 将站点 URL 域添加到 ALLOWED_HOSTS in settings.py
in你的 Django 项目
ALLOWED_HOSTS = ['***.azurewebsites.net']
第 4 步: 通过 FTP 或 Git.
发布您的 django 项目
第5步:切换到Kudu CMD并命令cd Python362x86
和touch get-pip.py
并复制内容url https://bootstrap.pypa.io/get-pip.py
通过编辑按钮进入 get-pip.py
,然后 运行 python get-pip.py
安装 pip 工具。
第 6 步: 安装 django
软件包或通过 python -m pip install ***
[=29= 安装您需要的任何软件包]
然后成功访问您的域url。
您也可以参考official tutorial。
希望对你有帮助。
更新答案:
根据您提供的屏幕截图和日志,我看到应用程序在 运行 时间检测到 Python 是 2.7 版本。
我在KUDU上查看环境变量,发现Python 2.7版本。
我建议您用您使用的扩展 Python 版本覆盖环境变量中的 Python 版本。
请重试。
Azure 在应用程序设置中仅支持 Python 版本 2.7 和 3.4,我通过 App Service 为我的 django 应用程序安装了更新的 Python 3.6.2。我按照 continuous integration with Azure & GitHub 的设置进行操作,发现当 Azure 是 运行 部署命令时部署失败。下面是显示 Azure 决定使用默认 2.7 的日志的一部分,即使我在 web.config
文件
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 will determine the version of Python to use for its virtual environment with the following priority:
- version specified in runtime.txt in the root folder
- version specified by Python setting in the web app configuration (the Settings > Application Settings blade for your web app in the Azure Portal)
- python-2.7 is the default if none of the above are specified
我无法使用 runtime.txt
指定版本,因为 3.6.2 不是内容的有效值。看起来 Azure 忽略了我的 web.config
,只是跳转到使用 2.7 作为默认值,因为指定了上面的 none。
截至目前,我必须进入 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>
根据我的经验,如果您在 Azure Python 网络应用程序中使用 python 扩展,则不必在应用程序设置中选择 Python 版本。
请参考我做的步骤如下:
第 1 步: 创建 azure web 应用程序并添加扩展(这里是 Python 3.6.2 x86)
第 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 步: 将站点 URL 域添加到 ALLOWED_HOSTS in settings.py
in你的 Django 项目
ALLOWED_HOSTS = ['***.azurewebsites.net']
第 4 步: 通过 FTP 或 Git.
发布您的 django 项目第5步:切换到Kudu CMD并命令cd Python362x86
和touch get-pip.py
并复制内容url https://bootstrap.pypa.io/get-pip.py
通过编辑按钮进入 get-pip.py
,然后 运行 python get-pip.py
安装 pip 工具。
第 6 步: 安装 django
软件包或通过 python -m pip install ***
[=29= 安装您需要的任何软件包]
然后成功访问您的域url。
您也可以参考official tutorial。
希望对你有帮助。
更新答案:
根据您提供的屏幕截图和日志,我看到应用程序在 运行 时间检测到 Python 是 2.7 版本。
我在KUDU上查看环境变量,发现Python 2.7版本。
我建议您用您使用的扩展 Python 版本覆盖环境变量中的 Python 版本。
请重试。