У меня есть приложение Django с общей структурой каталогов:Django: где settings.py ищет импорт и почему?
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 *
Который терпит неудачу с частичной StackTrace:
File "/foo/bar/project/app/settings.py", line 5, in <module> from settings_secret import *
ImportError: No module named 'settings_secret'
Для отладки, я создал тестовый файл внутри/проекта/вот так:
from settings_secret import *
print(VARIABLE_FROM_SETTINGS_SECRET)
Который работал как шарм. Настолько ясно, что settings.py не ищет нужного места для settings_secret. Итак, где он смотрит?
У вас есть файл '__init __. Py' под' app'? Вы также должны выполнить 'from .settings_secret import *' в 'settings.py'. – bbayles
У меня есть '__init __. Py', просто забыл включить в вопрос. Отредактировано. И да, я попробовал «.settings_secret import *», и это сработало - но почему? Почему он работает и почему он не работает без точки, как в моем тестовом файле? – fildred13
Я думаю, вы должны скорее установить свой импорт через переменные среды, а не «секретный файл». http://12factor.net/config – geekazoid