Py2exe编译正确,但构建的应用程序不起作用

时间:2014-05-30 10:55:13

标签: python py2exe

我使用Python 2.7来构建我的应用程序。在其中,我使用了几个包numpyscipycsvsysxlwttimewxpythonoperator

所有上述软件包都是64位的,我在Windows 7 Professional(64位版本)的Aptana Studio 3(64位版本)中使用python 2.7(64位版本)。

最后,我想使用以下代码将我的项目编译到应用程序,文件名为py2exeTest.py

from distutils.core import setup
import numpy                  # numpy is imported to deal with missing .dll file

import py2exe

setup(console=["Graphical_Interface.py"])

然后在cmd中,我切换到项目目录并使用以下行编译它:

python py2exeTest.py py2exe

一切顺利,它在dist目录下生成一个应用程序,应用程序名称为Graphical_Interface.exe

我双击它,但是出现了一个cmd窗口,一个python输出窗口闪烁,然后它们都消失了。我尝试以管理员身份运行应用程序,这与我的结果相同。

我可以知道如何解决这个问题吗?

谢谢!

修改

我设法捕获屏幕上闪烁的错误信息。我的错误信息是:

Traceback (most recent call last):
  File "Graphical_Interface.py", line 397, in <module>
  File "Graphical_Interface.py", line 136, in __init__
  File "wx\_core.pyc", line 3369, in ConvertToBitmap
wx._core.PyAssertionError: C++ assertion "image.Ok()" failed at ..\..\src\msw\bitmap.cpp(802) in wxBitmap::CreateFromImage(): invalid image

我在项目中使用了一个PNG图像,代码如下:

self.workflow = wx.Image("Work Flow.png", wx.BITMAP_TYPE_ANY).ConvertToBitmap()
wx.StaticBitmap(self.panel_settings, -1, self.workflow, (330,270), (self.workflow.GetWidth(), self.workflow.GetHeight()))

我试图从项目中评论上面的块,并且应用程序正常工作。但是,我需要将图像显示在应用程序中。

我可以知道如何处理吗?

感谢。

2 个答案:

答案 0 :(得分:2)

编译图形应用程序时,你不能将它们创建为控制台应用程序,因为原因(老实说无法解释我的具体细节),但试试这个:

from distutils.core import setup
import numpy
import py2exe
import wxpython
setup(window=['Graphical_Interface.py'],
      options={"py2exe" { 'boundle_files' : 1}})

另请考虑更改为:

它适用于Python3并支持多个平台 cx_freeze script看起来像是:

import sys
from cx_Freeze import setup, Executable

# Dependencies are automatically detected, but it might need fine tuning.
build_exe_options = {"packages": ["os"], "excludes": ["tkinter"]}

# GUI applications require a different base on Windows (the default is for a
# console application).
base = None
if sys.platform == "win32":
    base = "Win32GUI"

includefiles = ['/folder/image.png']

setup(  name = "GUIprog",
        version = "0.1",
        description = "My GUI application!",
        options = {"build_exe": build_exe_options, 'include_files' : includefiles},
        executables = [Executable("Graphical_Interface.py", base=base)])

答案 1 :(得分:0)

不用担心,我已经找到了解决方案。

事实证明,图像位于项目文件夹中,而不是dist文件夹中。所以我有两个解决方案:

  1. 将图像复制到dist文件夹

  2. 在代码中包含图像的完整路径。

  3. 感谢您的帮助。