我无法在python中访问动态导入的模块。
我的调用语法错误或导入无效。
stackoverflow.com上有很多主题可以处理动态导入 蟒蛇。然而,我采用了这个网站的代码:https://www.daniweb.com/software-development/python/code/238387/really-simple-plugins-loader-import-all-modules-in-a-folder-in-one-swoop
自动导入文件夹中的所有模块并返回字典。
代码:
import glob, imp
from os.path import join, basename, splitext
def importPluginModulesIn(dir):
return dict( _load(path) for path in glob.glob(join(dir,'[!_]*.py')) )
def _load(path):
name, ext = splitext(basename(path))
return name, imp.load_source(name, path)
modules = importPluginModulesIn('modules_folder')
print modules
输出表明导入成功:
{'test_function': <module 'test_function' from 'modules_folder/test_function.py'>}
然而,建议的访问方法根本不会产生任何响应(应打印:“测试完成。”):
modules['test_function'].__name__
有任何建议如何解决这个问题? 谢谢!
编辑: Martijn Pieters让我意识到我实际上是在误解模块和功能。 (见下面的评论。) 现在我的问题是如何在我的代码框架内实际调用嵌入在模块中的test_function test_function.py?
EDIT2: modules_folder中test_function.py的内容:
import time
def test_function():
print('Start.')
time.sleep(1)
print('Test complete.')
答案 0 :(得分:0)
尝试做:
for name in modules:
getattr(modules[name], name)()
它应该可以正常工作。