我使用Python 2.7来构建我的应用程序。在其中,我使用了几个包numpy
,scipy
,csv
,sys
,xlwt
,time
,wxpython
和operator
。
所有上述软件包都是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()))
我试图从项目中评论上面的块,并且应用程序正常工作。但是,我需要将图像显示在应用程序中。
我可以知道如何处理吗?
感谢。
答案 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
文件夹中。所以我有两个解决方案:
将图像复制到dist
文件夹
在代码中包含图像的完整路径。
感谢您的帮助。