0

我刚开始使用twisted。我在理解扭曲的插件系统时遇到了一些问题。我想要实现的是我的应用程序中的一个文件夹/包,我可以在其中放置插件,以便在我启动反应器时扭曲识别它们。

我的项目结构如下所示:

MyProj
  |-__init__.py
  |-myproj
      |-__init__.py
      |-imatism.py
      |-twisted
            |-__init__.py
            |-plugins
                 |-simplematerial.py
   

按照文档The Twisted Plugin System中的解释,我不确定是否将插件放在正确的包中。插件目录中没有init .py ,如教程中所述。启动反应器时不会引发错误,但getPlugins(MyProj.myproj.imatism.IMaterial)即使我实例化了两个 SimpleMaterial 对象,也会返回一个空列表。

我还尝试了“备用插件包”(参见上面的链接),它以相同的行为结束 - 没有错误,但也没有插件输出。

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

有人可以帮忙吗?

4

1 回答 1

0

init.py的问题真的是这个意思吗?或者那些是__init__.py文件?

如果是后者,请尝试将您的结构更改为:

MyProj
  |-myproj
      |-__init__.py
      |-imatism.py
      |-twisted
            |-plugins
                 |-simplematerial.py

重要的是,__init__.py将目录制作成 Python(导入样式,而不是分发样式)包。将__init__.pyinto 放入应用程序代码MyProjimport MyProj是可行的,但由于您没有__init__.pyin MyProj/myproj,因此您将无法这样做,import MyProj.myproj因此您的大部分代码可能无法访问。此外,名称中的冗余也不是很有帮助。

我还删除了__init__.pyfrom,MyProj/myproj/twisted因为这正是 Twisted 插件系统的工作方式:您不会将该目录设为 Python 包,它只是一个常规目录。

于 2013-04-24T12:29:43.980 回答