有比下面更好的方法来拥有一个最小的Python插件机制吗?
(这是受这个职位启发的。)
import sys
import pkgutil
import os.path
import plugins
pluginsPath = os.path.dirname(plugins.__file__)
pluginModules = [name for _, name, _ in pkgutil.iter_modules([pluginsPath])]
dictOfPlugins = {}
for plugin in pluginModules:
thePluginModuleName = "plugins."+plugin
result = __import__(thePluginModuleName)
dictOfPlugins[plugin] = sys.modules[thePluginModuleName](这确实假设您的所有插件都在一个名为" plugins“的目录中,因此是该包中的模块,并且该目录中有一个空白的__init__.py文件。)
如果您想要查找特定的插件,名称将是dictOfPlugins中的一个键,模块对象本身就是值。假设您知道Python插件模块的接口是什么,这似乎就能完成任务。有更好的方法吗?
发布于 2011-09-08 08:09:49
查看Django应用程序是如何工作的:
我不是说如果你不做网页开发,你应该使用Django,但是你可以在上面激发你的插件系统。
https://codereview.stackexchange.com/questions/2892
复制相似问题