首页 > 解决方案 > Python 函数内部的导入语句

问题描述

我一直在尝试(以我自己的方式)解决我正在开发的 Django 应用程序的配置合理且符合 12 因素的问题。

以下是我的想法。如您所见,我想将环境规范完全隔离到环境。在此之前,我不得不manage.py为每个新环境重新指定入门级设置文件,尽管每个环境已经有单独的设置文件。

settings.pymanage.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 语句只允许在模块级别使用。

我的问题有两个:这种方法总体上有多合理,有没有办法在函数级别进行导入?

标签: pythondjangoconfiguration

解决方案


推荐阅读