2011-04-11 101 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

相关问题