【发布时间】:2014-01-25 07:04:52
【问题描述】:
尝试根据一些动态环境变量动态添加设置属性到globals()。
import os
from importlib import import_module
# To support environment variables as the means of specifying
# the target environment as an alternative to using the --settings flag
# where MY_ENV is 'local', 'development', 'staging', 'production'
if os.environ.get('MY_ENV'):
env = os.environ.get('MY_ENV')
import_module('my.settings.%s' % env, '*')
据了解import_module需要赋值给一个变量:
foo = import_module('path.to.package', 'bar')
还有:
globals()[foo] = foo
可以将其添加到global 范围内。
但是,使用通配符* 可以做什么?
globals()[*] = import_module('path.to.package', '*')
显然,上面的内容会导致语法错误。
【问题讨论】:
-
看起来确实很相似。
-
我不认为
import_module的第二个参数意味着你认为的意思。它的包相对导入应该是相对的;你的例子都不是相对导入。 -
我明白了。我想我更多的是尝试使用字符串插值来动态改变导入路径。
-
这个问题在这里得到解答:[Python:如何动态导入模块中的所有方法和属性][1] [1]:stackoverflow.com/questions/21221358/…
-
嗯,正在尝试回答这个问题或标记为重复...
标签: python