我有一个使用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(目录)中提供的目录列表。
为什么会在用户的文件系统中找到所有插件的任何想法(无论他们指定了哪个插件目录)?
谢谢
答案 0 :(得分:0)
好吧,我已经找到了罪魁祸首。在仔细检查YAPSY PluginManager如何工作之后,似乎这就在我的最后。 PluginManager.locatePlugin()查看给定的目录,然后使用os.walk(给定路径)检查给定路径下的每个文件夹。
在不知不觉中,我将目录设置为“C:\ Documents and Settings \ achilds”,然后将我的插件放在桌面上,该桌面恰好位于:“C:\ Documents and Settings \ achilds \ Desktop” 。因此,PluginManager.locatePlugin()完成了它的设计,并搜索了“C:\ Documents and Settings \ achilds”中的所有目录,找到了我放在桌面上的目录。