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

时间:2014-06-27 01:42:08

标签: 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名称赋予了两个文件夹,一个在另一个文件夹中。所以它看起来是顶级的,没有找到它,并引发错误。我尝试使用系统路径中的父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

要获取有关此错误的更多信息,请查看How do I stop getting ImportError: Could not import settings 'mofin.settings' when using django with wsgi?

我只是想知道为什么Django会使默认结构如此困难,如果重命名的东西是最好的出路?似乎它可能是草率的,并且是一种容易出错的做事方式。如果我开始重命名,我不知道有多少地方需要更改名称。似乎很危险。

1 个答案:

答案 0 :(得分:5)

要理解的关键点是顶级mysite 不是 Python包(请注意,没有__init__.py)。它只是一个用于组织目的的常规文件夹。 (这就是mysite.mysite.settings永远无法工作的原因,无论PYTHONPATH如何。)

您需要做的就是确保mysite上此项目中唯一的顶级PYTHONPATH目录。一旦你这样做,一切都应该按照你期望的方式工作。 (如果你发现双命名令人困惑,你肯定可以在某种程度上重新命名。)