【问题标题】:twisted plugins / where to place them扭曲的插件/放置它们的位置
【发布时间】:2013-04-24 10:11:58
【问题描述】:

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

我的项目结构如下:

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

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

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

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

有人可以帮忙吗?

【问题讨论】:

    标签: python twisted


    【解决方案1】:

    您的问题是指init.py 吗?还是那些应该是__init__.py 文件?

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

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

    重要的是,__init__.py 将目录放入 Python(导入样式,而不是分发样式)包中。将__init__.py 放入MyProj 将使import MyProj 可以在您的应用程序代码中编写,但由于您在MyProj/myproj 中没有__init__.py,您将无法import MyProj.myproj 所以您的大部分代码可能无法访问。此外,名称中的冗余也不是很有帮助。

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

    【讨论】:

    • 对不起,我的意思当然是__init__.py。我已经编辑了这个问题。问题不在于进口。但是你对MyProj/myproj/twisted 中的__init__ 文件是正确的,就是这样。谢谢!
    • (冗余来自教程,但我认为你是对的。)
    猜你喜欢
    • 1970-01-01
    • 2012-10-16
    • 1970-01-01
    • 2020-02-02
    • 1970-01-01
    • 2012-08-02
    • 1970-01-01
    • 2014-08-17
    • 2011-11-03
    相关资源
    最近更新 更多