【发布时间】:2016-08-23 14:13:37
【问题描述】:
本质上,我正在尝试制作一个扩展系统,其中每个插件都通过文件中的相应功能挂钩到重要功能。我需要一种方法来运行此函数并获取返回值,只需遍历“plugins”目录即可。
有什么办法可以做到这一点?
【问题讨论】:
-
您可能会发现 this answer 很有帮助,尽管它是为 Python 2 编写的。
标签: python python-3.x
本质上,我正在尝试制作一个扩展系统,其中每个插件都通过文件中的相应功能挂钩到重要功能。我需要一种方法来运行此函数并获取返回值,只需遍历“plugins”目录即可。
有什么办法可以做到这一点?
【问题讨论】:
标签: python python-3.x
您可以使用__import__ 动态导入文件
所以你只需要遍历文件夹寻找 py 文件(不是 pyc)并导入它们
for root, dirs, files in os.walk(src_path):
for f in files:
if f.endswith('.py'):
m = __import__(f)
m 现在将成为模块的实例,所以如果你在它下面有一个名为my_func 的函数,你可以这样做:
m.my_func()
或者如果你有函数的名字作为字符串:
getattr(m,'my_func')()
【讨论】:
function吗?)尝试在你的模块中定义其他东西,看看它是否可以访问它们,或者添加一些你的代码,所以我可以帮助你