錯誤的項目設置相對進口繼在回答這裏的目錄結構:的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