扭曲的插件/放置它们的位置

时间:2013-04-24 10:11:59

标签: python twisted

我刚刚开始使用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”(参见上面的链接),它以相同的行为结束 - 没有错误但也没有插件输出。

可能是插件已加载但是没有正确实例化或在错误的位置?

有人可以帮忙吗?

1 个答案:

答案 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包,它只是一个常规目录。