【发布时间】:2020-05-09 08:00:05
【问题描述】:
我一直在本地开发一个 Django 项目,我最终决定将它发布到 AWS Elastic Beanstalk,在部署过程中,我不断收到一条错误消息:
从 django.core.wsgi 导入 get_wsgi_application
没有名为“django”的模块
我已经浏览了官方的tutorial from AWS 以及tutorial from the Real Python 我已经通过运行pip freeze 验证了实际上已经安装了Django,并且它返回
...
colorama==0.3.9
Django==2.2.9
django-celery==3.3.1
....
我也一直在本地广泛地使用 Django。但只是为了确保我运行了以下命令并得到了这个输出。
(.venv) $ source .venv/bin/activate
(.venv) $ pip install django
已满足要求:./.venv/lib/python3.7/site-packages (2.2.9) 中的 django
已满足要求:./.venv/lib/python3.7/site-packages 中的 sqlparse(来自 django)(0.3.0)
要求已经满足:./.venv/lib/python3.7/site-packages 中的 pytz(来自 django)(2019.3)
当我跑步时:
(.venv) $ python
Python 3.7.4 (default, Jul 9 2019, 18:13:23)
[Clang 10.0.1 (clang-1001.0.46.4)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import django
>>> print(django.__file__)
.../code/core_web_app/.venv/lib/python3.7/site-packages/django/__init__.py
对不起,如果这太过分了,但我看过的大多数帖子都有 cmets 询问是否安装了 Django 或说必须安装 Django。我的假设是 Django 安装在我的本地机器上,但没有安装在我的远程机器上。此外,我已经注意到post 并确保我的 requirements.txt 文件也在我的根目录中。您可以在下面找到一些其他信息。
.ebextensions/django.config
option_settings:
"aws:elasticbeanstalk:application:environment":
DJANGO_SETTINGS_MODULE: "myapp.settings"
"PYTHONPATH": "/opt/python/current/app/src:$PYTHONPATH"
"aws:elasticbeanstalk:container:python":
WSGIPath: src/myapp/wsgi.py
NumProcesses: 3
NumThreads: 20
"aws:elasticbeanstalk:container:python:staticfiles":
"/static/": "www/static/"
src/myapp/wsgi.py
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myapp.settings')
application = get_wsgi_application()
任何帮助将不胜感激,因为这是我第一次使用这个,我想我在某个地方犯了一个非常愚蠢的错误。
【问题讨论】:
-
我认为你应该在某个地方定义虚拟环境路径,就像在 linux 中我们有配置 .ini 文件,我们在其中定义虚拟环境路径。
-
我在这里的第一个想法是某些东西,也许是 requirements.txt,没有提交。有好几次我忘记在运行
eb deploy之前提交文件,这导致了问题。说到这里,这是如何部署的?
标签: python django python-3.x amazon-web-services amazon-elastic-beanstalk