Я создал файлы настроек 'Django style' для разных сред.Файлы настроек определяют некоторые переменные, а также служат для внедрения зависимостей для других модулей.
Итак, структура:
settings/
___init__.py
base.py
dev.py
dev2.py
prod.py
service/
__init__.py
service.py
service_mock.py
А в settings/__init__.py
я пишу:
settings_env = os.environ.get('PROJECT_SETTINGS', '')
if settings_env == 'prod':
from .prod import *
elif settings_env == 'dev':
from .dev import *
Каждый файл настроек определяет различные переменные, а также импортирует класс из service.py
или service_mock.py
, в зависимости от переменной среды.
Это работает в основном нормально.
Теперь проблема в том, что service.py
не может импортировать пакет настроек, потому что файлы настроек импортируют service.py
, так что импорт станет циклическим.
Как я вижу вDjango это решается с помощью импорта строк в файлах настроек, вместо фактического импорта.Мне не очень нравится эта идея, поскольку я теряю некоторые функции автозаполнения IDE, а также я не уверен, как на самом деле создать объект настроек, предоставляемый Django.
Каковы решения этой проблемы?Наличие файла настроек, который служит контейнером внедрения зависимостей, который импортирует модули и импортируется теми же модулями?Желательно простое решение.