错误的项目设置相对进口继在回答这里的目录结构:的Django的导致移动manage.py文件
Best practice for Django project working directory structure
发表在GitHub上这里的代码来解决:
我将manage.py
转换为scripts
目录。我修改了manage.py
和wsgi.py
有这些行:
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "{{ project_name }}.settings")
而不是默认的:
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "proj_dir.settings")
我认为这是基本相当。
无论如何,这是我得到的错误,当我运行python manage.py runserver
:
File "C:\Users\ISH~1\DJANGO~1\lib\importlib\__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 986, in _gcd_import
File "<frozen importlib._bootstrap>", line 969, in _find_and_load
File "<frozen importlib._bootstrap>", line 944, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 222, in _call_with_frames_removed
File "<frozen importlib._bootstrap>", line 986, in _gcd_import
File "<frozen importlib._bootstrap>", line 969, in _find_and_load
File "<frozen importlib._bootstrap>", line 944, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 222, in _call_with_frames_removed
File "<frozen importlib._bootstrap>", line 986, in _gcd_import
File "<frozen importlib._bootstrap>", line 969, in _find_and_load
File "<frozen importlib._bootstrap>", line 956, in _find_and_load_unlocked
ImportError: No module named '{{ project_name }}'
我已经使用相对进口试过,但真的没有得到任何地方来解决问题。作为一个新手,我相信答案是非常明显的,但我已经花了几个小时阅读这个问题,并没有真正到达任何地方。
一个建议增加from . import *
但这只是导致:
Traceback (most recent call last):
File "manage.py", line 4, in <module>
from . import *
SystemError: Parent module '' not loaded, cannot perform relative import
virtualenv
是主动和我从正确的目录中运行manage.py
。当它不在/scripts/
中时可以正常工作。
编辑:
我没有提到,但是这一点,无论在manage.py
是:
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "proj_dir.settings")
或者:
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "{{ project_name)).settings")
结果总是ImportError: No Module named 'xyz'
。在settings
之前填写xyz
。
此外,上述表明,我的项目不是像第一个链接讨论的那样100%实施。我的settings.py
仍处于默认位置。它看起来像这样基本上是:
~/projects/django-project
/proj_dir
settings.py
urls.py
wsgi.py
/scripts
manage.py
而且,我想这是因为我在scripts
想好了就可能会寻找proj_dir
实际上我希望它升了一级,以寻找proj_dir
。
os.environ.setdefault("DJANGO_SETTINGS_MODULE", ".proj_dir.settings")
这只是带来了以下错误。
TypeError: the 'package' argument is required to perform a relative import for '.proj_dir.settings'
这是当我开始与import
和from . import
乱搞,因为文件是说错误是涉及到这一点。仍然无法解决这个问题。
Hallelujah ......这个伎俩。知道这是简单的事情。 – sockpuppet