创建Python .exe文件:py2exe无效图像错误

时间:2012-10-10 22:13:37

标签: python wxpython py2exe

我想创建一个.exe文件。我正在使用Python 2.7.3和wxPython来实现GUI。我为Python 2.7安装了py2exe并尝试按照http://www.py2exe.org/index.cgi/Tutorial上的教程创建.exe文件

当我尝试运行创建的.exe文件时,出现以下错误:

File "wx\_gdi.pyc",line823, in BitmapFromImage wx._core.PyAssertionError: 
C++ assertion "image.OK()" failed at ..\..\src\msw\bitmap.cpp(802) in 
wxBitmap::CreateFromImage(): invalid image

所以我查看了我的代码,以下行导致了问题:

self.bmpSun = wx.StaticBitmap(self, wx.ID_ANY, wx.BitmapFromImage(wx.Image('images/sun.gif', wx.BITMAP_TYPE_ANY)), pos = (0,0))

当我浏览源文件夹并自己运行main.py文件时,我的应用运行正常。到目前为止,我还没有在网上找到任何帮助。任何人都可以解决这个问题/建议py2exe的可靠替代方案吗?谢谢。

1 个答案:

答案 0 :(得分:2)

出错的行正在Images文件夹中查找图片。这是相对于.exe创建的py2exe文件的路径。因此,您需要确保该文件夹存在于相对于exe的正确位置,并且它将填充您将要使用的图像。你可以这两种方式做到这一点。将文件夹复制到exe将驻留的位置,或在创建data_files的脚本中使用.exe关键字arg。以下是我的一个设置脚本的相关部分,显示了data_files元组列表以及稍后使用data_files关键字arg:

data_files = [('Images', glob('Images/*.*')),
                            ]

includes = ['win32com.decimal_23', 'datetime']

excludes = ['_gtkagg', '_tkagg', 'bsddb', 'curses',  'pywin.debugger',
            'pywin.debugger.dbgcon', 'pywin.dialogs', 'tcl',
            'Tkconstants', 'Tkinter', 'unittest']
packages = []

dll_excludes = ['libgdk-win32-2.0-0.dll', 'libgobject-2.0-0.dll', 'tcl84.dll',
                'tk84.dll','MSVCP90.dll']

setup(
    data_files = data_files,
    options = {"py2exe": {"compressed": 2,
                          "optimize": 2,
                          "includes": includes,
                          "excludes": excludes,
                          "packages": packages,
                          "dll_excludes": dll_excludes,
                          "bundle_files": 1,
                          "dist_dir": "dist",
                          "xref": False,
                          "skip_archive": False,
                          "ascii": False,
                          "custom_boot_script": '',
                         }
              },
    zipfile = None,
    windows = [filename]
    )