Django:settings.py在哪里寻找导入,为什么?

时间:2016-02-27 23:05:17

标签: python django

我有一个具有公共目录结构的Django应用程序:

project
---manage.py
---app
   ---__init__.py
   ---settings.py
   ---settings_secret.py
   ---a bunch of other files for the app itself

settings_secret.py文件包含来自secrets.py的变量,我不想发送给github。出于某种原因,我似乎无法将其导入settings.py。前5行settings.py:

# Django settings for project. 
DEBUG = True
TEMPLATE_DEBUG = DEBUG
import os
from settings_secret import *

部分堆栈跟踪失败:

File "/foo/bar/project/app/settings.py", line 5, in <module> from settings_secret import *
ImportError: No module named 'settings_secret'

要进行调试,我在/ project /中创建了一个测试文件,如下所示:

from settings_secret import *
print(VARIABLE_FROM_SETTINGS_SECRET)

这就像一个魅力。很明显,settings.py并没有找到settings_secret的正确位置。那它在哪里看?

1 个答案:

答案 0 :(得分:2)

settings.py中,您应该:from .settings_secret import *

它与.一起使用,因为正确的语法应该是:

from app.settings_secret import *

删除app是速记编码,但同样的原则适用。您需要告诉Django查找目录(app),然后指定要查找的目录中的哪个文件。

如果您刚刚执行了from settings_secret import *,那么您告诉Django要查找不存在的目录settings_secret

这对你有意义吗?