2012-06-27 40 views
0

我有一個應用程序使用我們的插件框架YAPSY。該程序指定一個默認的插件目錄,還允許用戶指定一個目錄,以及(保存在一個XML文件):Yapsy查看整個文件系統的插件

# 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

那麼,我已經找出了罪魁禍首。看來,這是在我的最後,經過仔細檢查YAPSY PluginManager如何工作。 PluginManager.locatePlugin()查看給定的目錄,但隨後使用os.walk(給定路徑)檢查給定路徑下的每個文件夾。

不知不覺中,我將目錄設置爲在「C:\ Documents and Settings \ achilds」中查找,然後將我的插件放置在正好位於位置的桌面上:「C:\ Documents and Settings \ achilds \ Desktop 」。因此,PluginManager.locatePlugin()完成了它設計的目標,並通過「C:\ Documents and Settings \ achilds」中的所有目錄進行搜索,找到我放置在桌面上的目錄。

+0

是的,這正是發生的情況。根據你認爲這種行爲有多糟,你可以隨意在yapsy的sourceforge tracker上註冊一個bug。我仍然在慢慢地,但肯定會不斷髮展。 –