我最近一直在与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的真正错误,还是我错过了其他的东西?
答案 0 :(得分:3)
正在被调用的element
&#39;在堆栈的底部实际上是yapsy试图实现的插件类。因此element()
实际上调用了插件类的__init__
方法。
回到异常消息,这似乎表明你的插件类有一个构造函数,它需要的参数多于self
,但yapsy期望插件类在构造时不需要显式参数。
因此,您应该检查正在加载的插件的插件类的定义,因为它很可能出现问题所在。
如果班级&#39; init只有一个arg self
,那么您可以查看描述可能相关警告的trouble shooting documentation for yapsy。
如果这些都没有帮助,您可以提交导致问题的插件文件的小代码示例。