0

我有一个将YAPSY用于我们的插件框架的应用程序。该程序指定了一个默认插件目录,还允许用户指定一个目录(保存在 XML 文件中):

    # Get the default plugin directory, using XML
    path = os.path.expanduser('~')
    xml = xml_controller.Controller(path + '\.cxvrc.xml')
    xml.load_file()
    xml.get_plugin_directory()
    directory = ["plugins", xml.get_plugin_directory()]

    # Load the plugins from the default plugin directory.
    manager = PluginManager()
    manager.setPluginPlaces(directory)
    manager.setPluginInfoExtension('plugin')
    manager.collectPlugins()

这样做的问题是它正在加载用户的插件,无论它们在文件系统上的什么位置。本质上,它忽略了 XML 文件查询的结果字符串。为什么会这样?一个例子

    xml.get_plugin_directory()

返回是一个字符串:“C:\Documents and Settings\achilds”。我认为 collectPlugins() 方法应该检查我在 setPluginPlaces(directory) 中提供的目录列表。

任何想法为什么会在用户的文件系统上找到所有插件(无论他们指定了什么插件目录)?

谢谢

4

1 回答 1

0

嗯,我已经找出了罪魁祸首。在仔细检查了YAPSY PluginManager的工作原理之后,这似乎是我的目标。PluginManager.locatePlugin()查看给定的目录,然后使用 os.walk(given paths) 检查给定路径下的每个文件夹。

在不知不觉中,我将目录设置为查看“C:\Documents and Settings\achilds”,然后将我的插件放在桌面上,恰好位于:“C:\Documents and Settings\achilds\Desktop”。因此,PluginManager.locatePlugin() 完成了它的设计,并搜索了“C:\Documents and Settings\achilds”中的所有目录,找到了我放在桌面上的目录。

于 2012-06-27T21:21:32.167 回答