如何修复 AWS 上的 Django“ModuleNotFoundError:没有名为“应用程序”的模块”?

Tan*_*owe 8 django wsgi amazon-web-services amazon-elastic-beanstalk

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

我之前已经在 AWS 上部署过这个 Web 应用程序。当我尝试部署新版本然后决定重新开始时,我搞砸了。这是我的 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())```
Run Code Online (Sandbox Code Playgroud)

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

小智 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
Run Code Online (Sandbox Code Playgroud)

现在它应该看起来像这样:

option_settings:
  aws:elasticbeanstalk:container:python:
    WSGIPath: ebdjango.wsgi:application
Run Code Online (Sandbox Code Playgroud)


yaa*_*ach 1

我也遇到了这个问题。就我而言,在部署到 AWS EB 后,我收到了 502 nginx 错误,eb deploy并且我的环境出现了红旗。

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

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