如何组织我已经工作的插件系统的文件结构?
我正在研究一个项目,其主要设计指导原则是可扩展性. 我通过定义一个元类来实现一个插件系统,该元类使用类方法注册任何被加载的插件的类名(每种类型的插件都继承自核心代码中定义的特定类,因为有不同类型的插件应用程序).基本上这意味着开发人员必须将他的类定义为
并且主程序将知道他的存在,因为PieChart将被包含在ChartPluginAncestor.plugins的已注册插件列表中. 作为类方法的安装方法,所有插件在其类代码加载到内存时都会被注册(因此即使在实例化该类的对象之前)也是如此. 该系统对我来说工作得很好(虽然我总是对如何改进架构的建议持开放态度!)但我现在想知道什么是管理插件文件的最佳方式(即包含插件的文件的位置和方式)应该存储). 到目前为止,我正在使用 – 用于开发目的 – 我称之为“插件”的包.我将所有包含插件类的* .py文件放在包目录中,我只是在main.py文件中发出import plugins,以便正确安装所有插件. 编辑:杰夫在评论中指出,导入插件的各个模块中包含的类将不会随时可用(我没有意识到这一点,因为我是 – 为了调试目的 – 从plugins.myAI单独导入每个类进口AI). 但是,在我开发和测试代码时,这个系统才有用,如: >插件可能带有自己的单元测试,我不想在内存中加载它们. 所以我的问题确实 – 或许 – 三个: >插件容器:我的目标最明智的选择是什么?单个文件?包?一个简单的.py文件目录?) 最佳答案
这个问题很难解决,因为需求很复杂.
无论如何,我会尝试一些建议. 关于
一个好方法是virtualenv. Virtualenv是一个用于构建“隔离”python安装的python模块.这是让单独项目协同工作的更好方法. 试一试:http://pypi.python.org/pypi/virtualenv
一个好的方法是一个python包,它可以在导入时进行“自我注册”:只需在包目录中定义一个正确的init.py 一个例子可以是http://www.qgis.org/wiki/Writing_Python_Plugins 另见http://pypi.python.org/pypi/giblets/0.2.1
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |