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

Posted

技术标签:

【中文标题】如何在 AWS 上修复 Django“ModuleNotFoundError: No module named \'application\'”?【英文标题】:How to fix Django "ModuleNotFoundError: No module named 'application'" on AWS?如何在 AWS 上修复 Django“ModuleNotFoundError: No module named 'application'”? 【发布时间】:2021-08-19 16:20:52 【问题描述】:

我正在尝试在 AWS 上重新部署 Django Web 应用程序。我的弹性豆茎环境已经变红了几次。当我在 cli 上运行 eb 日志时,我收到“ModuleNotFoundError: No module named 'application' error”。我认为这与我的 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())```

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

【问题讨论】:

【参考方案1】:

默认情况下,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

【讨论】:

以上是关于如何在 AWS 上修复 Django“ModuleNotFoundError: No module named 'application'”?的主要内容,如果未能解决你的问题,请参考以下文章

如何修复在AWS上失败的React应用程序依赖项?

如何在 AWS 上部署 Django Rest Framework 和 React

使用 postgres 在 AWS 上部署的 django 项目 - 如何创建数据库

如何在 AWS Elastic Beanstalk 上部署 django 频道 2.x?

如何修复 aws 区域错误“ValueError:必须使用 SageMaker 支持的区域设置本地 AWS 配置”

您如何修复 AWS 弹性 beanstalk rails 资产预编译的文件权限错误?