关于cx_freeze和Python 3.2.2的问题?

3 投票
1 回答
1818 浏览
提问于 2025-04-17 11:59

我正在尝试用cx_freeze 4.2.3把一个Python 3.2.2的脚本打包。这个脚本使用了PyQt4,我不确定这是否会导致问题。在构建过程中,Python崩溃了。以下是命令行的输出:

C:\Python32\New Folder>python setup.py build

正在运行构建

正在运行构建可执行文件

复制 C:\Python32\Lib\site-packages\cx_Freeze\bases\Win32GUI.exe -> build\exe.win32-3.2\app.exe

复制 C:\WINDOWS\system32\python32.dll -> build\exe.win32-3.2\python32.dll

在这个时候,Python在Windows上崩溃了,并弹出了“发送错误报告”的对话框:

python.exe 遇到问题,需要关闭。我们对此造成的不便表示歉意。

这是我的setup.py文件:

from cx_Freeze import setup, Executable

GUI2Exe_Target_1 = Executable(
    script = "script.pyw",
    initScript = None,
    base = 'Win32GUI',
    targetName = "app.exe",
    compress = True,
    copyDependentFiles = True,
    appendScriptToExe = False,
    appendScriptToLibrary = False,
    icon = "icon.png"
    ) 
excludes = ["pywin", "tcl", "pywin.debugger", "pywin.debugger.dbgcon",
        "pywin.dialogs", "pywin.dialogs.list", "win32com.server",
        "email"] 
includes = ["PyQt4.QtCore","PyQt4.QtGui","win32gui","win32com","win32api","html.parser","sys","threading","datetime","time","urllib.request","re","queue","os"] 
packages = [] 
path = [] 
setup(
    version = "1.0",
    description = "myapp",
    author = "me",
    author_email = "email@email.com",
    name = "app",
    options = {"build_exe": {"includes": includes,
                             "excludes": excludes,
                             "packages": packages,
                             "path": path
                            }
               },
    executables = [GUI2Exe_Target_1]
    )

你们觉得我哪里出错了?

补充:经过一些实验,我发现我尝试使用的图标导致了问题。如果不设置图标,它就能正常构建。

1 个回答

3

看起来,cx_freeze 需要图标使用 .ico 格式。如果你尝试用 .png 格式的图标,构建过程会出错。而且,仅仅把文件的扩展名从 .png 改成 .ico 是不行的,你必须把文件真正转换成 ico 格式。

这对某些人来说可能很明显,但在线文档并没有详细说明图标所需的格式。

撰写回答