我有一个用 Python 编写的应用程序,由相当技术性的受众(科学家)使用。
我正在寻找一种让用户可以扩展应用程序的好方法,即脚本/插件架构。
我正在寻找 非常轻量级 的东西。大多数脚本或插件不会由第三方开发和分发并安装,而是由用户在几分钟内完成,以自动执行重复任务,添加对文件格式的支持,等等。所以插件应该具有绝对最小的样板代码,并且除了复制到文件夹之外不需要“安装”(所以像 setuptools 入口点或 Zope 插件架构似乎太多了。)
是否有任何类似的系统已经存在,或者任何实施类似方案的项目,我应该寻找想法/灵感?
我的基本上是一个名为“plugins”的目录,主应用程序可以轮询它,然后使用imp.load_module来获取文件,寻找一个可能带有模块级配置参数的知名入口点,然后从那里开始。我使用文件监控的东西来实现插件处于活动状态的一定量的动态,但这是一个不错的选择。
当然,任何伴随着“我不需要[大而复杂的东西] X;我只想要一些轻量级的东西”的需求都会冒着一次重新实现一个发现的需求的风险。但这并不是说无论如何你都不能从中获得乐趣:)