我有一个具有公共目录结构的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的正确位置。那它在哪里看?
答案 0 :(得分:2)
在settings.py
中,您应该:from .settings_secret import *
它与.
一起使用,因为正确的语法应该是:
from app.settings_secret import *
删除app
是速记编码,但同样的原则适用。您需要告诉Django查找目录(app
),然后指定要查找的目录中的哪个文件。
如果您刚刚执行了from settings_secret import *
,那么您告诉Django要查找不存在的目录settings_secret
。
这对你有意义吗?