我想导入名称未知的模块的成员。取而代之的动态导入Python模块
import foo
我使用:
__import__("foo")
我如何才能实现对from foo import bar
箱子而不是诉诸的“EVAL”类似的事情?
更新:看来fromlist
做到了。有没有类似from foo import *
的方法? fromlist=['*']
没有做到这一点。
我想导入名称未知的模块的成员。取而代之的动态导入Python模块
import foo
我使用:
__import__("foo")
我如何才能实现对from foo import bar
箱子而不是诉诸的“EVAL”类似的事情?
更新:看来fromlist
做到了。有没有类似from foo import *
的方法? fromlist=['*']
没有做到这一点。
为了模拟from foo import *
可以使用dir
得到导入模块的属性:
foo = __import__('foo')
for attr in dir(foo):
if not attr.startswith('_'):
globals()[attr] = getattr(foo, attr)
使用from foo import *
在一般皱着眉头,并模仿它更是这样,我会想象。
__import__("foo", fromlist=["bar"])
了解更多信息help(__import__)
谢谢。有没有办法模仿“从富进口*”? – ustun 2012-03-20 09:21:26
您可以用动态的__import__
帮助进口。有fromlist
的关键参数__import__
致电from foo import bar
。
谢谢。有没有办法模仿“从富进口*”? – ustun 2012-03-20 09:18:37
有时要导入的许多配置文件中的一个,每一个为相同的命名变量有不同的价值观,http://stardict.sourceforge.net/Dictionaries.php下载等
你不能做到这一点:
def mother_function(module, *args, **kwargs):
from module import variable
return variable
def call_home_to_mamma():
import module_42
return mother_function(module_42)
关于为什么这不起作用的解释高于我的薪酬等级,并涉及到关闭和命名空间。我发现工作是要求以“MODULE_NAME”作为一个字符串参数母函数,然后dyamically导入特定变量的时候我真的需要它:
def mother_function(module_name, *args, **kwargs):
exec('from %s import %s' % (module_name, variable))
variable = eval(variable)
return variable
def call_home_to_mamma():
import module_42
return mother_function(module_42.__name__)
宾果....你有任何变量的dyamic进口您需要从运行时确定的导入模块导入。
+1我使用__builtins__而不是globals(),以便我可以使用另一个模块的代码。 – 2012-10-16 00:15:01