当我最初创建我的Django项目时,我有这个文件夹结构:
project/
project/
manage.py
settings.py
...
在最顶层的文件夹中,我初始化了我的git repo以及我的虚拟环境。
我想要折叠顶层文件夹级别(好像我已经运行了`django-admin.py startproject。':
project/
manage.py
settings.py
然而,当我尝试手动执行此操作时,它突然找不到设置模块。它仍然在project.settings.
寻找它可能在哪里被硬编码?
当我运行python manage.py runserver
时,我收到此错误:
ImportError: Could not import settings 'module.settings' (Is it on sys.path?): No module named settings
当我运行django-admin.py help <some subcommands>
时,我收到此错误:
ImportError: Settings cannot be imported, because environment variable DJANGO_SETTINGS_MODULE is undefined.
我确定某处我有设置设置的路径,但我找不到它。有什么想法吗?
答案 0 :(得分:0)
过去我曾经使用过这些地方:
$virtualenv/bin/activate
脚本$virtualenv/lib/pythonx.y/site-packages
答案 1 :(得分:0)
错误是由于以下可能性:
您没有从项目根目录运行命令,即project/
,而不是project/project
。
项目根目录project/
PYTHONPATH
您的manage.py
不在项目根目录,即project/
,而是在project/project
。
可能的解决方案:
project/
添加到PYTHONPATH
- 因为manage.py
尝试执行相当于import project.settings
的操作,并且为了实现这一点,需要找到{{1}在project
如果您有sys.path
中列出的项目根目录project/
- 问题必须PYTHONPATH
导入manage.py
格式的设置,您可以在在同一级别,即它必须只是project.settings
- 所以将settings
一级向上移动到项目根目录manage.py
从当前project/
。
将project/project
设为DJANGO_SETTINGS_MODULE
。
project.settings
表示设置模块是低于project.settings
的一个目录 - 在您的情况下,您同时拥有manage.py
和manage.py
,即{ {1}}
那就是你没有使用默认的django项目结构。
无论如何,你可以在运行'runserver'命令之前检查/导出设置:(来自官方Django文档 - setting DJANGO_SETTINGS_MODULE
)
示例(Unix Bash shell):
settings.py
示例(Windows shell):
project/project/
建议:尽量遵守传统的项目结构(至少在你成为专家之前)。即保持export DJANGO_SETTINGS_MODULE=mysite.settings
django-admin.py runserver
其他项目文件的一个目录等级set DJANGO_SETTINGS_MODULE=mysite.settings
django-admin.py runserver
,manage.py
等