Yapsy在init上抛出TypeError,在init上缺少参数

时间:2014-12-31 16:00:16

标签: python

我最近一直在与Yapsy合作(第1.10.423节),并且我遇到过(我认为)最近来自PyPi的软件包。

我得到的痕迹在下面。

Traceback (most recent call last):
  File "./clayrd.py", line 256, in <module>
    run()
  File "./clayrd.py", line 202, in run
    loadPlugins()
  File "./clayrd.py", line 121, in loadPlugins
    _pluginMgr.collectPlugins()
  File "/usr/local/lib/python2.7/dist-packages/yapsy/PluginManager.py", line 531, in collectPlugins
    self.loadPlugins()
  File "/usr/local/lib/python2.7/dist-packages/yapsy/PluginManager.py", line 513, in loadPlugins
    plugin_info.plugin_object = element()
TypeError: __init__() takes exactly 3 arguments (1 given)

有问题的方法开始跟踪

def loadPlugins():
    """
    Load up all of our plugins
    """

    # Set plugin dir and horde them
    _pluginMgr  =   PluginManager() # Defined at start of script
    _pDir       =   os.path.join(_config['run_dir'], _pluginDir)
    _logger.info("Worker is loading plugins from {}".format(_pDir))
    _pluginMgr.setPluginPlaces([_pDir])
    _pluginMgr.collectPlugins() # This is line 121

    # Attempt plugin activation
    for plugin in _pluginMgr.getAllPlugins():
        _logger.info("Worker attempting to activate plugin {}".format(plugin.name))

        _loaded =   _pluginMgr.activatePluginByName(plugin.name)
        if _loaded == False:
            _logger.warn("Failed to load plugin {}".format(plugin.name))
            continue

        else:
            _logger.info("Plugin {} loaded successfully. Loading dependencies...".format(plugin.name))

我的问题很简单:这是Yapsy的真正错误,还是我错过了其他的东西?

1 个答案:

答案 0 :(得分:3)

正在被调用的element&#39;在堆栈的底部实际上是yapsy试图实现的插件类。因此element()实际上调用了插件类的__init__方法。

回到异常消息,这似乎表明你的插件类有一个构造函数,它需要的参数多于self,但yapsy期望插件类在构造时不需要显式参数。

因此,您应该检查正在加载的插件的插件类的定义,因为它很可能出现问题所在。

如果班级&#39; init只有一个arg self,那么您可以查看描述可能相关警告的trouble shooting documentation for yapsy

如果这些都没有帮助,您可以提交导致问题的插件文件的小代码示例。