Python中的动态导入

Python中的动态导入,python,dynamic,import,module,Python,Dynamic,Import,Module,如何进行此导入: from module import * 是否使用imp模块 免责声明: 我需要使用imp模块,因为我需要做几个语句,我想动态地做 我需要使用*,因为我需要在我进行导入的文件中,可以直接使用模块中定义的变量和方法,我的意思是没有模块.方法或模块.变量。我想导入模块中的所有变量和方法,因为我不知道将来模块中会有哪些方法或变量 您可以通过以下方式完成: from imp import * 但请记住: 显式比隐式好 (来自Python的禅宗-使用以下命令阅读:导入此)此处 de

如何进行此导入:

from module import *
是否使用
imp
模块

免责声明:

  • 我需要使用
    imp
    模块,因为我需要做几个语句,我想动态地做
  • 我需要使用
    *
    ,因为我需要在我进行导入的文件中,可以直接使用
    模块
    中定义的变量和方法,我的意思是
    没有模块.方法
    模块.变量
    。我想导入模块中的所有变量和方法,因为我不知道将来模块中会有哪些方法或变量
您可以通过以下方式完成:

from imp import *
但请记住:

显式比隐式好

(来自Python的禅宗-使用以下命令阅读:
导入此

此处

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)
我试图先找到一个
\uuuuu all\uuuuu
符号,然后,如果该符号存在,则执行一个
dir()
和抓取看起来非私有的符号-您必须查看
import*
的实现,以了解它是否与Python的实际逻辑非常接近,以满足您的需要。

如果您使用的是django(如注释中所述),类似的功能应该可以工作

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

但我同意这可能是危险的

所以一旦你从这个神秘模块导入了所有东西,你不知道它包含什么,你打算用它做什么?;-)我正在尝试将django settings.py拆分为几个文件。我可以推荐这个吗?当然可以,但是我有点不同,但是我需要使用imp模块,因为我需要导入几个times@diegueus9当前位置我完全不明白你在说什么。您可以在不同的位置执行
import imp
(首次导入
imp
模块后,每个
import imp
语句都将被忽略),甚至可以使用
reload(imp)
重新导入模块。“因为我需要多次导入”并不是导入所有内容的原因,我认为这甚至不相关。对不起,我认为这是我的英语不好,但在免责声明中,我试图解释为什么仅从imp导入*不适用于me@diegueus9:是关于根据您拥有的字符串加载模块吗?例如,你想要像
import\u my\u module(模块名称)
这样的功能,而不是在代码中任何你喜欢的地方调用
import imp
?是的。此外,我需要模仿模块导入中的
*
,我有一个StringsInTesting模块列表,但你不是魔鬼代言人吗?一次从模块名称导入中对多个模块名称执行
,跳过名称以“
”开头的所有元素?另外,
dir()
的主要用途是交互式提示,他们在文档中提到,不同版本的提示行为可能有所不同。但确实很有趣;)来自
语法不适用于您的本地my_模块。您将看到“my_模块未定义”。import_模块类似于“from foo import bar”,因此很遗憾,通配符导入无法工作