Импорт утверждений внутри функций в Python - PullRequest
1 голос
/ 04 ноября 2019

Я пытался решить (по-своему) проблему создания конфигураций разумных и совместимых с 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 разрешены только на уровне модуля.

У меня двоякий вопрос: насколько в целом подход такой подход и есть ли способ сделать импорт на функциональном уровне?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...