【问题标题】:Azure Web App - Python: can't open file 'manage.py': [Errno 0] No errorAzure Web App - Python:无法打开文件“manage.py”:[Errno 0] 无错误
【发布时间】:2021-04-03 22:04:46
【问题描述】:

我正在尝试将我的 Django 应用程序与 Azure DevOps 一起部署为 Azure Web 应用程序。该应用程序已流水线化并构建到 Web 应用程序,但它不会运行。 当我尝试在诊断控制台中运行 py manage.py runserver 时,我收到以下错误:

D:\Python34\python.exe: can't open file 'manage.py': [Errno 0] No error

有人知道问题可能是什么吗? 这是我尝试使用 Azure 部署的第一个项目,所以我的知识不是很好。 项目文件存储在服务器上的以下位置

D:\home\site\wwwroot\<applicationName>

我有时也会收到此错误:

Window title cannot be longer than 1023 characters.

文件结构

wwwroot
--- 应用程序名称
------ api
------ 应用程序名称
------ .env
------ db.sqlite3(空且未使用)
------ 管理.py
------ requirements.txt

已尝试解决问题的方法

  1. 根据 Jason Pan 的想法更改配置 -> 路径映射 -> 物理路径中的文件路径
  2. 添加 web.config 文件(添加到 wwwroot -> applicationname -> web.config)。配置文件粘贴在下面。这导致了以下错误:The specified CGI application encountered an error and the server terminated the process.

Web.Config 文件:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
 <system.webServer>

  <handlers>
    <add name="httpPlatformHandler" path="*" verb="*"
               modules="httpPlatformHandler" resourceType="Unspecified"/>
  </handlers>

  <httpPlatform processPath="D:\home\python364x64\python.exe" arguments="manage.py runserver %HTTP_PLATFORM_PORT%" requestTimeout="00:04:00" startupTimeLimit="120" startupRetryCount="3" stdoutLogEnabled="true">
    <environmentVariables>
     <environmentVariable name="PYTHONPATH" value="D:\home\site\wwwroot"/>
    </environmentVariables>
  </httpPlatform>

 </system.webServer>
</configuration>

感谢您的帮助。

解决方案
在 Jason Pan 的大力帮助下,我设法将其设置为容器服务,并且该应用程序现在可以正常运行!非常感谢杰森!

【问题讨论】:

  • 请告诉我wwwroot文件夹下的内容。
  • 由于格式原因,我在原帖中添加了这个。
  • 尝试用windows容器创建web应用^-^。
  • 由于azure web app是sandbox env,所以不能再改了,需要使用容器web app。 imgur.com/a/hFbK04e
  • 如果我的解决方案对您有所启发或帮助,您能否将我的答案标记为accepted,谢谢~

标签: python django azure manage.py


【解决方案1】:

最新

之前我们改变路径,我们需要修改回来。

第 1 步。添加扩展。

第 2 步。添加 web.config。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <handlers>
      <add name="PythonHandler" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified"/>
    </handlers>
    <httpPlatform processPath="D:\home\python364x64\python.exe"
                  arguments="D:\home\site\wwwroot\manage.py runserver %HTTP_PLATFORM_PORT%"
                  stdoutLogEnabled="true"
                  stdoutLogFile="D:\home\LogFiles\python.log"
                  startupTimeLimit="60"
                  processesPerApplication="16">
      <environmentVariables>
        <environmentVariable name="PORT" value="%HTTP_PLATFORM_PORT%" />
      </environmentVariables>
    </httpPlatform>
  </system.webServer>
</configuration>

第 3 步。确保您的 wwwroot 文件夹中的目录结构与我的相同。

步骤 4. 在python364x64 中运行命令pip install python-decouple

第 5 步。然后您的应用就可以了。如果也有问题,可以像我一样排查问题。

测试结果。

在本地。

部署后。


您的目录结构应如下所示。它会正常工作。

wwwroot
--- api
--- 应用程序名称
--- .env
--- db.sqlite3(空且未使用)
--- 管理.py
--- requirements.txt

为了验证我的猜测,你可以在传送门中这样测试。

然后重新启动您的网络应用程序,如果它可以工作,它也可以是一个解决方案。之前出现这个问题的原因是添加了文件夹applicationname。

【讨论】:

  • 您好,感谢您的回复!我按照您的步骤更改了文件路径,但错误仍然相同。我注意到在尝试运行 manage.py runserver 命令时我也遇到了一个新错误 ---> 窗口标题不能超过 1023 个字符。编辑:用这个错误更新了原始帖子。
  • @MariusBekk 尝试添加包含 httpplatformhandler 的 webconfig 文件。
  • 我会尝试,但我有点不确定如何,所以我必须先弄清楚。我发现的另一件事是,当我尝试从诊断工具编辑 manage.py 文件时,我可能会出现一个错误,说我没有这样做的权限......这可能是问题所在,还是你不能这样做是正常的从此视图写入文件?
  • 我添加了一个Web.Config文件,看原帖的内容。我现在收到此错误:“指定的 CGI 应用程序遇到错误,服务器终止了进程”
  • @MariusBekk 如果可能的话,您可以上传您的示例代码而不包含敏感信息,我明天可以为您提供帮助。
猜你喜欢
  • 1970-01-01
  • 2019-10-24
  • 2021-12-27
  • 1970-01-01
  • 2017-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-23
相关资源
最近更新 更多