Python ModuleNotFoundError:没有名为';django';部署到弹性豆茎时
我一直在本地处理Django项目,最终决定将其发布到AWS Elastic Beanstalk,在部署过程中,我不断收到一个错误消息,上面说: 从django.core.wsgi导入获取\u wsgi\u应用程序 没有名为“django”的模块 我已经浏览了官方文件以及我已经验证了Django实际上是通过运行Python ModuleNotFoundError:没有名为';django';部署到弹性豆茎时,python,django,python-3.x,amazon-web-services,amazon-elastic-beanstalk,Python,Django,Python 3.x,Amazon Web Services,Amazon Elastic Beanstalk,我一直在本地处理Django项目,最终决定将其发布到AWS Elastic Beanstalk,在部署过程中,我不断收到一个错误消息,上面说: 从django.core.wsgi导入获取\u wsgi\u应用程序 没有名为“django”的模块 我已经浏览了官方文件以及我已经验证了Django实际上是通过运行pip freeze安装的,然后它返回 colorama==0.3.9 Django==2.2.9 django芹菜==3.3.1 我也在当地广泛地与Django合作。但是为了确保我运行
pip freeze
安装的,然后它返回
colorama==0.3.9
Django==2.2.9
django芹菜==3.3.1
我也在当地广泛地与Django合作。但是为了确保我运行了下面的命令并得到了这个输出
(.venv)$source.venv/bin/activate
(.venv)$pip安装django
已满足要求:django in./.venv/lib/python3.7/site-packages(2.2.9)
已满足要求:sqlparse in./.venv/lib/python3.7/site-packages(来自django)(0.3.0)
已满足要求:pytz in./.venv/lib/python3.7/site-packages(来自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
抱歉,如果这是过度杀戮,但我看到的大多数帖子都有评论询问是否安装了Django,或者说必须安装Django。我的假设是Django安装在我的本地机器上,而不是远程机器上。此外,我注意到了这一点,并确保我的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()
如果您有任何帮助,我们将不胜感激,因为这是我第一次使用此工具,我想我在某个地方犯了一个非常愚蠢的错误。为了回答您的问题,在使用AWS ElasticBeanstalk(EBS)部署Django或flask或dash应用程序时,您几乎不需要检查一些东西 注意:如果应用程序是使用AWS EBSCLI托管的,即EBS的命令行功能,而不是通过AWS帐户上的EBS用户界面托管的方法,则概述以下步骤根据我个人的经验,我发现托管应用程序的UI方法不适用于flask、Django或dash应用程序。
/opt/python/run/venv/bin
。为了验证这一点,只需在连接到linux服务器后键入命令cd/opt/python/run/venv/bin
。一旦您能够导航到此路径,请尝试通过提供source./activate来激活virtualenv
python
,然后尝试导入django。如果发现django软件包未安装在此virtualenv下,则必须手动安装,因为托管应用程序将引用此virtualenv。任何需要被托管应用程序引用的新包都必须仅在此virtualenv下安装/opt/python/bundle/2/app
。如果您将来愿意更改应用程序代码或任何支持文件,可以参考此目录。例如,如果要更改任何源代码,可以直接编辑此存储库下的源代码文件,然后重新启动服务器以使更改生效requirements.txt
文件时,请确保该文件中仅存在应用程序所需的软件包。当您执行pip freeze requirements.txt
时,当前环境中的所有包都将在requirements.txt
文件中创建一个条目。这可能会在AWS EBS尝试安装此文件时产生错误。原因是,例如,PackageA和PackageB可能是PackageC的依赖包。如果安装PackageC,则会自动安装PackageA和PackageB。说到这里,您必须删除requirements.txt文件中的PackageA和PackageB,并只保留PackageC。因为安装PackageC会自动安装它的相关包,即PackageA和PackageB。因此,为了简短起见,您只需将使用pip install
手动安装的软件包包含在本地计算机的requirements.txt
文件中即可。所有其他软件包将是这些软件包的从属软件包,并将在安装主软件包时自动安装。因此,这些依赖包需要从requirements.txt
中删除