2011-04-11 62 views
0

我有一個使用pygtk編寫的應用程序,它使用pygtk構建GUI,窗口構建中也包含一些glade文件。使用py2exe創建的可執行文件中的問題

我的問題是我的應用程序工作正常,當我從cmd運行它,但是當我用py2exe創建一個exe應用程序不啓動,但它創建我正在寫在應用程序日誌的空日誌文件。

我setup.py看起來像:

from distutils.core import setup 
import os 
import pygtk 
import py2exe 

setup(
name = 'ABC', 
description = 'blah blah blah', 
author = 'XYZ', 
version = '0.1', 

windows = [ 
       { 
        'script': 'filename.py', 
        'icon_resources': [(1, "logo.ico")], 
       } 
      ], 


options = { 
       'py2exe': { 
        'packages':'encodings', 
        'includes': 'cairo, pango, pangocairo, atk, gobject,gio', 
       } 
      }, 
data_files=[ 
       'logo.png', 'bg.png', 'completed.png', 'down.png','up.png', 
       'processing.gif', 'cygcrypto-0.9.8.dll', 'cyggcc_s-1.dll', 
       'cygiconv-2.dll', 'cygpopt-0.dll', 'cygssp-0.dll', 'cygwin1.dll', 
       'cygz.dll', 'prog.exe','prog2.exe', 'prog3.exe', 
       'Login.glade', 'settings_lib.glade', 
       'Microsoft.VC90.CRT.manifest', 'msvcm90.dll','etc.zip', 
       'lib.zip', 'msvcp90.dll', 'msvcr90.dll', 'share.zip' 
      ]) 

可能是什麼問題呢?

+0

你嘗試過'cx_freeze'嗎?我試過使用'py2exe',但它根本不適用於我(我正在製作一個PyQt4應用程序)。 'cx_freeze' *做了*工作,但我仍然不知道爲什麼'py2exe'沒有... – Blender 2011-04-11 15:21:03

回答

1

當我使用像py2exe和py2app這樣的工具時,我也遇到過這樣的問題。

IIRC,很多時候是由於雙擊.exe文件時Python進程的工作目錄非常不同造成的。您可能需要在Python程序啓動時添加一些代碼,該代碼記錄的值爲os.getcwd()

另一件棘手的事情是,您必須確保py2exe捆綁在您的程序使用的所有Python模塊中。從命令行運行時,您使用的是包含所有這些模塊的Python。雙擊.exe文件時,您使用的是捆綁到可執行文件中的Python以及您在setup.py中明確列出的模塊 - 很容易錯過。爲了找到這個,你可以在你的導入文件中放入try/except子句,然後將ImportError例外記錄到一個文件中。

+0

謝謝馬克,得到了問題,實際上問題是在輸入glade模塊。我正在嘗試解決這個問題,我有什麼建議可以解決這個問題? – Shital 2011-04-12 05:28:47

相關問題