2012-11-08 49 views
3

我正在使用Python。我的文件GUI.py使用Yapsy將新插件添加到我的軟件中。我完成了所有工作,現在我想使用py2exe生成可執行文件。我不知道如何訂購py2exe來包含Yapsy及其所有模塊。我已經試過了,它不工作:如何在py2exe中包含Yapsy?

opts = { 
    'py2exe': { "includes" : ["yapsy.PluginManager","sip", "matplotlib.backends", "matplotlib.backends.backend_qt4agg", 
           "matplotlib.figure","pylab", "numpy","matplotlib.backends.backend_tkagg"]} 

... 

setup(
     name='PImageQT', 
     version='1.0', 
     author='Jaime', 
     package={'images/*', 'Windows6S/*', 'modulos6S/*', 'OperacionesPlugins/*'}, 
     scripts=['GUI.py'], 
     console=["GUI.py"], 
     options=opts, 
     data_files=data_files, 
     zipfile=None 
    ) 

我已經找到了在這個環節http://notinthestars.blogspot.com.es/2011/04/using-python-plugin-scripts-with-py2exe.html但它並沒有解決我的問題。

在我的每個插件的Gui.py文件中,我將一個動作添加到菜單中。可執行文件中的這個菜單沒有出現。

有誰知道我該怎麼做?

非常感謝。

編輯:

我用的斷點和yapsy工作正常,但它並沒有發現我的插件目錄。該目錄的名稱是相同的。

編輯2:

的路徑是確定和目錄是到路徑。我不知道爲什麼在用py2exe打包後找不到plugins目錄。我對設置目錄代碼行是像其他網頁一樣:self.manager.setPluginPlaces(["plugins"])

編輯3:

我嘗試使用相對路徑來搜索插件和,這是行不通的。

self.manager.setPluginPlaces([os.getcwd() + os.sep + "plugins"]) 

編輯4:

今天,我試圖列出目錄是我在和我的目錄「插件」是我不明白什麼,但問題仍然存在。

print(os.listdir('.')) 

編輯5:

這是永無止境的故事。我已經使用PYInstaller來製作一個可執行文件來檢查問題是否是py2exe。它不起作用。現在我認爲問題是Yapsy。有任何想法嗎?

+0

你的意思是什麼意思,不工作任何堆棧跟蹤? –

+0

請編輯您的問題 –

回答

2

從您的編輯似乎問題與訪問某些打包插件(而不是yapsy模塊本身)。

對於您可能要檢查以下兩點:

  • 當你調用self.manager.setPluginPlaces(["plugins"])

    注意路徑「插件」可能不涉及您認爲該目錄。您應該使用更具體的路徑,使用來自py2exe的「我是我」常見問題的提示:http://www.py2exe.org/index.cgi/WhereAmI

  • 您也可以嘗試將插件打包爲data_files(就像在您鏈接的網頁中一樣),我不確定py2exe是如何處理「包」參數(在你的代碼示例中)。

編輯:對於以後可能會用的人,答案是在下面,基本的意見發生了什麼是插件的一個有一個導入錯誤(不是py2exe打包的依賴),這導入錯誤只有在python的標準日誌記錄被正確配置/激活時才能看到:

import logging 
logging.basicConfig(level=logging.DEBUG) 
+0

謝謝你的回答。爲了知道我是誰,我使用了這個代碼行: os.getcwd(),結果是包含plugins目錄的目錄。 我試過第一個選項,但是jpath發生了一些事情。我這樣做鏈接http://www.py2exe.org/index.cgi/PathModul但它不起作用。 第二個選項,我實際使用。 我繼續工作。 非常感謝您的時間。 –

+0

os.getcwd()對打包的應用程序來說不是一個好的選擇,我在帖子中提到的py2exe鏈接建議在應用程序打包時使用sys.executable * *(可以使用hasattr(sys.frozen)進行測試) - 我不確定他們爲什麼使用jpath,你可能想嘗試沒有它:重要的一點是檢查,當運行打包的應用程序時,路徑仍然是正確的(事實上,打包之前的路徑通常是不相關的)。 –

+0

我已經使用了替代解決方案,路徑沒問題。我列出了目錄,而插件目錄在裏面。 –

0

你可能需要包括所有yapsy

opts = { 
    'py2exe': { "includes" : ["yapsy","sip", "matplotlib.backends", "matplotlib.backends.backend_qt4agg", 
           "matplotlib.figure","pylab", "numpy","matplotlib.backends.backend_tkagg"]} 

... 

setup(
     name='PImageQT', 
     version='1.0', 
     author='Jaime', 
     package={'images/*', 'Windows6S/*', 'modulos6S/*', 'OperacionesPlugins/*'}, 
     scripts=['GUI.py'], 
     console=["GUI.py"], 
     options=opts, 
     data_files=data_files, 
     zipfile=None 
    ) 

只是胡亂猜測然而

+0

謝謝您的答案澤維爾,但我之前嘗試過,它沒有奏效。 –