如何从模块导入*使用importlib?

时间:2017-03-28 01:45:58

标签: python python-import

我想使用importlib完成与from module import *相同的结果。

此问题Importing module with a local name using importlib介绍了import module as mod如何处理,但这些问题相关但不相同。

1 个答案:

答案 0 :(得分:3)

要模拟from X import *,您必须导入模块,然后将适当的名称合并到全局命名空间中。

# get a handle on the module
mdl = importlib.import_module('X')

# is there an __all__?  if so respect it
if "__all__" in mdl.__dict__:
    names = mdl.__dict__["__all__"]
else:
    # otherwise we import all names that don't begin with _
    names = [x for x in mdl.__dict__ if not x.startswith("_")]

# now drag them in
globals.update({k: getattr(mdl, k) for k in names})