用py2exe创建的可执行文件中的问题

时间:2011-04-11 15:10:08

标签: python pygtk

我有一个用python编写的应用程序,它使用pygtk来构建GUI,还有一些glade文件包含在窗口构建中。

我的问题是当我从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'
           ])  

可能是什么问题?

1 个答案:

答案 0 :(得分:1)

使用像py2exe和py2app这样的工具时,我有很多次这样的问题。

IIRC,很多时候它是由Python进程的工作目录引起的,当双击.exe时会有很大的不同。您可能希望在Python程序的启动中添加一些代码,以记录os.getcwd()

的值

另一件棘手的事情是你必须确保你的程序正在使用的所有Python模块中的py2exe包。从命令行运行时,您使用的是包含所有这些模块的Python。双击.exe时,您使用的是捆绑到可执行文件中的Python以及您在setup.py中明确列出的模块 - 它很容易错过。{要找到这个,您可以在导入周围放置try / except子句,然后将ImportError例外记录到文件中。