模块未找到错误:没有名为'django'的模块。

4

我使用Django在虚拟环境中构建了一个网站,并按照AWS文档的步骤部署了该网站。我已经将网站部署到了AWS Web服务器上,使用Elastic Beanstalk,并设置了运行3.6版本和Django 2.1.1的Python环境。我已经拉取了日志并得到了以下错误:

Traceback (most recent call last):
File "/opt/python/current/app/weddingProject/wsgi.py", line 12, in <module>
from django.core.wsgi import get_wsgi_application
ModuleNotFoundError: No module named 'django'
Target WSGI script '/opt/python/current/app/weddingProject/wsgi.py' cannot be loaded as Python module.

我已阅读其他帖子,他们说django未安装,然而,requirements.txt文件中确实将其列为要安装的软件包。因此,我不确定是什么原因导致了这个问题,也不知道如何检查服务器以确保它已安装。

当我运行pip freeze > requirements.txt时,我看到django被列为要安装的软件包。我运行eb deploy,但出现了一些原因导致django未被安装。


“我不确定是什么导致了这个问题” - 很明显,未安装该模块导致了这个问题。Django 的文档中描述了安装过程。我想 AWS 也提供了各种安装手册。 - ForceBru
你尝试过手动安装 Django 并检查是否工作正常吗? - Léopold Houdin
是的,可能没有安装Django。这可能会有所帮助:https://dev59.com/2mw05IYBdhLWcg3weBlF#10429168 - Dan Swain
嗯... requirements.txt 列出了 Django,但你是否实际运行了安装命令以安装 requirements.txt 中的软件包。 - Mad Wombat
@MadWombat 正确,我的项目是在 Django 中构建的,在我的虚拟环境中已经安装了它! - dcarlo56ave
显示剩余7条评论
5个回答

6

我曾经遇到过同样的问题。要求文件requirements.txt放在比它更深一层的位置。将requirements.txt放在和.elasticbeanstalk/相同的目录下。

例如:

├── .ebextensions
│   ├── 01_packages.config
│   └── 02_python.config
├── .elasticbeanstalk
│   └── config.yml
├── testproject
│   ├── db.sqlite3
│   ├── cust_app
│   │   ├── admin.py
│   │   ├── apps.py
│   │   ├── models.py
│   │   ├── tests.py
│   │   ├── urls.py
│   │   └── views.py
│   ├── manage.py
│   └── testproject
│       ├── asgi.py
│       ├── __init__.py
│       ├── settings.py
│       ├── urls.py
│       └── wsgi.py
└── requirements.txt

1
对于那些遇到这个问题的人,还应该检查一下自己是在项目文件夹内部还是外部进行压缩,当解压缩或打开压缩文件时应该与这个解决方案类似。 - Luiz

2

我不确定为什么,但是Elastic Beanstalk没有安装要求。对我来说也是这样,所以我必须手动完成。在适当的环境中安装要求的正确方法是:

  1. 登录ebs使用的ec2实例内部。
  2. 转到/var/app/venv/staging-LQM1lest/bin <-- 可根据配置更改(使用ebs控制台检查)。
  3. sudo ./pip install -r /var/app/current/requirements.txt

这应该可以解决问题。


0

https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create-deploy-python-django.html

  1. 使用 eb create 创建环境并将应用程序部署到其中: eb create django-env

您是否已创建虚拟环境?如果是,那么对于命令 eb status,您得到了什么输出?

或者,您能否列出您使用 Elastic Beanstalk 部署 Django 应用程序所遵循的步骤?

阅读此文档:https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create-deploy-python-container.html,以使用 AWS Elastic Beanstalk Python 平台。


0
我曾经遇到过完全相同的问题。对我来说,我需要将我的 .elasticbeanstalk 和它的 config.yml 放在 mysite/ 中。然后它就可以工作了。 WSGIPath 应该是 mysite/wsgi.py,而不是 mysite/mysite/wsgi.py

-1
发现问题所在。要求文件(requirement.txt)放错了目录,导致 Django 未能安装。

2
你需要把它放在哪里? - seth

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接