Python中的动态导入

时间:2011-12-01 03:14:58

标签: python dynamic import module

如何进行此导入:

from module import *

使用imp模块?

声明:

  • 我需要使用imp模块,因为我需要制作几个语句,我想动态地执行它
  • 我需要使用*,因为我需要在我导入的文件中,module中定义的变量和方法可以直接使用,我的意思是without module.method或{{1} }。我想要导入模块中的所有变量和方法,因为我不知道将来模块中可以使用哪些方法或变量

3 个答案:

答案 0 :(得分:5)

下面!

def load_everything_from(module_names):
    g = globals()
    for module_name in module_names:
        m = __import__(module_name)
        names = getattr(m, '__all__', None)
        if names is None:
            names = [name for name in dir(m) if not name.startswith('_')]
        for name in names:
            g[name] = getattr(m, name)

我试图先找到一个__all__符号,然后,如果那个文件,做一个dir()并抓住看起来非私人的符号,我会在那里做一些事情 - 你我们必须查看import *的实现,以了解它是否与Python的实际逻辑非常相似,以达到您的目的。

答案 1 :(得分:1)

如果你正在使用django(如评论中所述),那么这样的事情应该可行

from django.utils import importlib
my_module = importlib.import_module('app.my_module')
from my_module import *

但我同意这可能是危险的

答案 2 :(得分:0)

您可以通过以下方式完成:

from imp import *

但请记住:

  

明确比隐含更好。

(来自 Python的禅宗 - 使用以下命令读取它:import this