Python 为什么Django将2个文件夹命名为项目名称?

Python 为什么Django将2个文件夹命名为项目名称?,python,linux,django,mod-wsgi,wsgi,Python,Linux,Django,Mod Wsgi,Wsgi,因此,在Django结构(默认设置)中,我的文件夹结构如下所示: /mysite /mysite __init.py settings.py urls.py wsgi.py /mymodel ... /myapp ... manage.py 因此,要访问设置文件,wsgi.py默认设置为mysite/settings.py。然而,Django将mysite名称

因此,在Django结构(默认设置)中,我的文件夹结构如下所示:

/mysite
    /mysite
        __init.py
        settings.py
        urls.py
        wsgi.py
    /mymodel
        ...    
    /myapp
        ...
    manage.py
因此,要访问设置文件,wsgi.py默认设置为mysite/settings.py。然而,Django将mysite名称赋予了两个文件夹,一个在另一个文件夹中。因此,它在顶层1中查找,没有找到它,并引发一个错误。我尝试使用系统路径中父mysite目录的mysite/mysite/settings.py,但出现了相同的错误

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
要获取有关此错误的更多信息,请选中


我只是想知道为什么Django会让默认结构变得如此困难,如果重命名东西是最好的解决方法?看起来这可能是一种草率和容易出错的做事方式。不知道如果我真的开始重命名东西,我需要更改多少地方的名称。看起来很危险。

要理解的关键点是顶级的
mysite
不是Python包(请注意,没有
\uuuu init\uuuu.py
)。它只是一个用于组织目的的常规文件夹。(这就是为什么
mysite.mysite.settings
永远不会工作,不管
PYTHONPATH


您所需要做的就是确保顶级的
mysite
目录是
PYTHONPATH
上此项目的唯一内容。一旦你这样做了,一切都应该按照你期望的方式进行。(如果您发现双重命名令人困惑,当然可以谨慎地重命名。)

您通常会将顶级mysite放在PYTHONPATH(或同等名称)上,以便您的Web服务器可以找到mysite/settings.py.Yep,我已经这样做了。也许下一步我会研究init.py文件。所以基本上这一切背后没有原因,这只是一个糟糕的设计决策?