我正在使用Yapsy作爲插件系統的後端程序。用戶可以編寫自己的插件並在運行時加載它們。我有一個菜單,顯示所有加載的插件,每個插件都是自己的菜單項。我還提供兩個預製插件程序。當通過eclipse運行程序時,這些預製插件加載正常(即菜單顯示兩個插件);然而,在我創建一個可執行文件後,使用cx_Freeze,出於某種原因,插件無法正確加載。只找到第一個插件,這很奇怪,因爲兩個插件都駐留在同一個目錄中,並且代碼在我的末尾沒有更改。我想知道Yapsy是否有問題?爲什麼它只能找到一個插件,當它們都在同一個目錄中時(僅在使用cx_Freeze創建可執行文件之後)?Yapsy通過eclipse與cx_Freeze可執行文件查找插件
這裏是我得到的預先製作的插件方式的一例:
default_dir = os.path.expanduser('~') + os.sep + "plugins"
if xml.get_plugin_directory() == "":
directory = [default_dir] # no user specified directory
else:
directory = [default_dir, xml.get_plugin_directory()] # user specified dir too
# Load the plugins from the specified plugin directory/s.
manager = PluginManager()
manager.setPluginPlaces(directory)
manager.setPluginInfoExtension('plugin')
manager.collectPlugins()
for plugin in manager.getAllPlugins():
...
正如你所看到的,我設置的默認目錄(它總是應該已經創建和我測試過這以確保),然後通過yapsy.PluginManager().setPluginPlaces(directory)
將插件位置設置到該目錄或該目錄以及用戶指定的目錄。默認的插件位置不在我的eclipse工作區中;它駐留在別的地方。正如我之前所說的,這在通過Eclipse運行程序時工作正常,但是一旦我創建了可執行文件,就只能找到其中一個插件。我期望在沒有找到插件的情況下出現錯誤,但這很奇怪,確實發現了一個插件,而不是其他插件。另外,如果我將更多測試插件文件添加到默認目錄,則會找到這些文件。這幾乎就像Yapsy完全跳過第二個插件(僅在運行可執行文件時)。
任何想法,爲什麼我可能會得到這種行爲?
感謝, 亞當
謝謝Thibauld Nion!這很令人頭疼,但正如你指出的那樣,這是一個導入錯誤。 cx_Freeze不包括scipy庫,這是特定插件使用的庫之一。這似乎解決了我的問題。謝謝。 – adchilds 2012-07-31 15:06:06