我刚刚开始使用twisted。我有一些问题需要理解扭曲的插件系统。我想要实现的是我的应用程序中的文件夹/包,我可以放置插件,以便在启动反应器时通过扭曲识别它们。
我的项目结构如下所示:
MyProj
|-__init__.py
|-myproj
|-__init__.py
|-imatism.py
|-twisted
|-__init__.py
|-plugins
|-simplematerial.py
按照文档The Twisted Plugin System中的说明,我不确定是否将插件放在正确的包中。插件目录中没有 init .py,如教程中所述。
启动reactor时没有错误,但即使我实例化了两个SimpleMaterial对象,getPlugins(MyProj.myproj.imatism.IMaterial)
也会返回一个空列表。
我还尝试了“Alternate Plugin Packages”(参见上面的链接),它以相同的行为结束 - 没有错误但也没有插件输出。
可能是插件已加载但是没有正确实例化或在错误的位置?
有人可以帮忙吗?
答案 0 :(得分:0)
你的问题中真的是init.py
吗?或者那些意味着__init__.py
个文件?
如果是后者,那么尝试改变你的结构:
MyProj
|-myproj
|-__init__.py
|-imatism.py
|-twisted
|-plugins
|-simplematerial.py
重要的是,__init__.py
将目录放入Python(导入样式,而不是分发样式)包中。将__init__.py
放入MyProj
会使import MyProj
成为您在应用程序代码中编写的可行内容,但由于__init__.py
中没有MyProj/myproj
,将无法import MyProj.myproj
,因此大部分代码可能无法访问。此外,名称中的冗余也没有多大帮助。
我还从__init__.py
删除了MyProj/myproj/twisted
,因为这就是Twisted插件系统的工作方式:你没有将该目录设为Python包,它只是一个常规目录。