2012-10-10 82 views
2

我想创建一个.exe文件。我使用Python 2.7.3和wxPython作为GUI。我已经安装了py2exe为Python 2.7,并试图建立一个.exe文件在http://www.py2exe.org/index.cgi/Tutorial创建一个Python .exe文件:py2exe无效图像错误

当我尝试运行我创建.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提供可靠的替代方案吗?谢谢。

+0

Ive有很多运气的用InnoSetup和pyinstaller ...(我用WX) –

回答

2

出错的行正在Images文件夹中查找图像。这是相对于由py2exe创建的.exe文件的路径。因此,您需要确保该文件夹相对于该exe文件存在于正确的位置,并且它将与您要使用的图像一起填充。你可以通过2种方式来完成。将文件夹复制到exe文件所在的位置,或者在.exe的脚本中使用data_files关键字arg。这是我的安装脚本之一的相关部分,呈现出的元组和以后使用data_files关键字arg的的data_files列表:

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] 
    ) 
+0

谢谢!我从来没有想过如果它在我的IDE中工作,我必须替换图像文件夹。我将一个文件夹下的图像复制到dist文件夹中,一切正常。 –

+0

很高兴为你效劳。 – MikeHunter

相关问题