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版本 具有以下优先级的环境:
- 在根文件夹
中的runtime.txt中指定的版本- 在Web应用程序配置中由Python设置指定的版本 (您的网络应用程序的设置>应用程序设置刀片 Azure门户网站)
如果没有指定上述内容,- python-2.7是默认值
醇>
我无法使用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>
答案 0 :(得分:0)
根据我的经验,如果您在Azure Python Web应用程序中使用python Extensions,则不必在应用程序设置中选择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步: 将您的网站网址域添加到django项目settings.py
中的ALLOWED_HOSTS
ALLOWED_HOSTS = ['***.azurewebsites.net']
第4步: 通过FTP或Git发布您的django项目。
第5步: 切换到Kudu CMD并命令cd Python362x86
和touch get-pip.py
并复制网址https://bootstrap.pypa.io/get-pip.py
的内容通过编辑按钮进入get-pip.py
,然后运行python get-pip.py
以安装点子工具。
第6步: 通过django
python -m pip install ***
包或您需要的任何包
然后成功访问您的域名网址。
您也可以参考official tutorial。
希望它对你有所帮助。
更新答案:
根据您提供的屏幕截图和日志,我看到应用程序在运行时检测到Python是2.7版本。
我检查KUDU上的环境变量并找到Python 2.7版本。
我建议您使用您使用的扩展Python版本的版本覆盖环境变量中的Python版本。
请再试一次。