如何在 AWS 上修复 Django “ModuleNotFoundError: No module named 'application'”?

问题描述 投票:0回答:5

我正在尝试在 AWS 上重新部署 Django Web 应用程序。我的 elastic beanstalk 环境已经红了几次。当我在 cli 上运行 eb logs 时,我收到“ModuleNotFoundError:没有名为‘application’的模块错误”。我认为这与我的 wsgi 配置有关。

我之前在 AWS 上部署过这个网络应用程序。当我尝试部署新版本然后决定重新开始时,我搞砸了。这是我的 wsgi.py 配置:

```import os

from django.core.wsgi import get_wsgi_application
from django.contrib.staticfiles.handlers import StaticFilesHandler

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings")

application = StaticFilesHandler(get_wsgi_application())```

当我部署应用程序时,它给我一个 502:网关错误。如果您想了解有关此问题的更多信息,请告诉我。任何指针将不胜感激。

django amazon-web-services amazon-elastic-beanstalk wsgi
5个回答
5
投票

默认情况下,Elastic Beanstalk 会查找名为 application.py 的文件来启动您的应用程序。因为这在您创建的 Django 项目中不存在,所以您需要对应用程序的环境进行一些调整。您还必须设置环境变量,以便可以加载应用程序的模块。

遵循以下说明: https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create-deploy-python-django.html#python-django-configure-for-eb

我收到这个错误是因为在旧版本中 django.config 看起来像这样:

option_settings:
  aws:elasticbeanstalk:container:python:
    WSGIPath: ebdjango/wsgi.py

现在它应该是这样的:

option_settings:
  aws:elasticbeanstalk:container:python:
    WSGIPath: ebdjango.wsgi:application

0
投票

我也遇到过这个问题。在我的例子中,我在使用

eb deploy
部署到 AWS EB 后收到 502 nginx 错误,我的环境有一个危险信号。

我的 AWS EB 使用的是 Amazon Linux 2 AMI,一切都设置正确但经过大量尝试和错误后我意识到我的 .ebextensions 文件夹被命名为 .ebtextensions.

我希望 EB 或 django 会在其日志中指出我的文件夹命名不正确。


0
投票

我遇到了这个错误,也花了几天时间试图解决它。问题来自 django.config 文件。

option_settings:
  aws:elasticbeanstalk:container:python:
  WSGIPath: <app name>.wsgi:application

WSGIPath选项中的第一个值(应用程序名称)需要是包含wsgi.py文件的目录


0
投票

也在 AWS 控制台中检查 elastic beanstalk 配置(软件类别)中的 WSGIPath。

应该是

<app_name>.wsgi:application

0
投票

我解决了这个问题

  1. 确保我的 django.config 文件具有正确的设置,例如
    option_settings:
      aws:elasticbeanstalk:container:python:
      WSGIPath: <app name>.wsgi:application
  1. 通过在我的项目中包含一个 .ebignore 文件。

https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/eb-cli3-configuration.html#eb-cli3-ebignore

© www.soinside.com 2019 - 2024. All rights reserved.