Я пытался решить (по-своему) проблему создания конфигураций разумных и совместимых с 12-факторами для приложения Django, над которым я работаю.
Моей идеей было следующее. Как видите, я хотел полностью изолировать спецификацию среды, ну, в общем, среды. До этого мне приходилось заново указывать файл настроек начального уровня внутри manage.py
для каждой новой среды, несмотря на то, что уже имелись отдельные файлы настроек для каждой среды.
settings.py (на что указывает manage.py )
import environ
env = environ.Env()
environ.Env.read_env()
DJANGO_ENV = env('DJANGO_ENV')
def production():
import production
def development():
from .development import *
def testing():
import testing
def staging():
import staging
options = {'production': production,
'development': development,
'testing': testing,
'staging': staging}
print(options[DJANGO_ENV]())
Однако я получил жалобы (ошибки) из Python 3.7, что операторы import разрешены только на уровне модуля.
У меня двоякий вопрос: насколько в целом подход такой подход и есть ли способ сделать импорт на функциональном уровне?