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”,因此很遗憾,通配符导入无法工作