我想从函数内部导入一个模块。例如:
from directory.folder.module import module
def import():
app.register_blueprint(module)
对此:
def import():
from directory.folder.module import module
但是,没有硬编码。例如:
def import():
m = "module"
from directory.folder.m import m
有可能吗?提前感谢
发布于 2020-11-19 08:57:04
您需要进口库模块。
下面是使用这个模块的最简单的方法。将调用模块的结果编织到环境中有许多不同的方法:
import importlib
math = importlib.import_module("math")
print(math.cos(math.pi))
结果:
-1.0
我经常用这个图书馆。我用它建立了一个完整的插件部署系统。所有各种部署的脚本都被放在目录中,只有在配置文件中提到它们时才导入,而不是所有必须立即导入的内容。
我觉得这个模块很酷的地方是它的文档顶部声明的内容:
导入库包的用途是双重的。一种是在Python源代码中提供导入语句的实现(因此,扩展为导入()函数)。
2.7文档中的介绍也很有趣:
新版本2.7。 这个模块是Python3.1中更完整的同名包中可用的一个小子集,它提供了一个完整的导入实现。这里所提供的帮助有助于从2.7过渡到3.1。
发布于 2020-11-19 08:55:54
不,python import
不是这样工作的。
例如,您尝试导入一个名为mod
的模块,以便运行import mod
。现在,解释器将在从以下来源收集的目录列表中搜索mod.py
:
因此,如果您有一个名为m='mod'
的变量并运行import m
,它将搜索m.py
而不是mod.py
。
但是,一个愚蠢的危险的解决方案就是使用exec()
(恶意输入的警告)。
m = "module"
exec(f'from directory.folder.m import {m}')
如果您不介意外部模块,请尝试importlib
。
发布于 2020-11-19 08:59:22
可以使用导入库模块以编程方式导入模块。
import importlib
full_name = "package." + "module"
m = importlib.import_module(full_name)
https://stackoverflow.com/questions/64916281
复制