2014-06-27 113 views
2

所以在我的Django stucture(默認設置),我的文件夾結構是這樣的:爲什麼Django將2命名爲項目名稱?

/mysite 
    /mysite 
     __init.py 
     settings.py 
     urls.py 
     wsgi.py 
    /mymodel 
     ...  
    /myapp 
     ... 
    manage.py 

所以進入設置文件,wsgi.py是,默認情況下,設置爲的mysite/settings.py 。但是,Django將這個mysite名字給了兩個文件夾,一個在另一箇中。所以它看起來在頂層,沒有找到它,並引發錯誤。我嘗試了mysite/mysite/settings.py與系統路徑中的父母mysite的目錄,但是給出了相同的錯誤。

ImportError: Could not import settings 'mysite.mysite.settings' (Is it on sys.path? Is there an import error in the settings file?): No module named mysite.mysite.settings 

要獲得有關這個錯誤的詳細信息,請How do I stop getting ImportError: Could not import settings 'mofin.settings' when using django with wsgi?

我只是想知道爲什麼Django的使默認結構如此困難,如果重命名的東西是最好的出路?看起來這可能是草率的,並且是一種容易出錯的做事方式。不知道有多少地方需要更改名稱,如果我開始重命名的東西。看起來很危險。

+2

您通常會將頂級mysite放在您的PYTHONPATH(或等價物)上,以便您的網絡服務器可以找到mysite/settings.py。 –

+0

是的,我已經做到了。也許接下來我會研究__init__.py文件。 – User

回答

4

要理解的關鍵是頂級mysite而不是 Python包(請注意,沒有__init__.py)。這只是用於組織目的的常規文件夾。 (這就是爲什麼mysite.mysite.settings永遠不會成功,無論PYTHONPATH的。)

所有你需要做的是確保頂級mysite目錄是從這個項目的唯一事情上你PYTHONPATH。一旦你這樣做,一切都應該按照你期望的方式工作。 (如果您發現雙命名令人困惑,但是您當然可以在一定程度上將其重命名)

+0

所以基本上沒有爲什麼在這背後,這只是一個糟糕的設計決定? – Sajuuk

相關問題