You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用cx_Freeze打包PyQt5程序为EXE时出现no base named 'Win32GUI'错误

错误产生原因

核心是cx_Freeze 6.8正式版对base参数的命名规则做了不兼容更新:

  • 旧版本中Windows GUI程序专用的Win32GUI参数名已被废弃,替换为跨平台统一的gui参数
  • 你此前打包正常时使用的是6.8b2测试版或更旧的cx_Freeze版本,版本升级后命名规则不匹配就触发了该错误
修复方案

方案1(推荐,适配新版本规则)

直接修改打包代码中base参数的赋值逻辑,将原有代码:

# base="Win32GUI" should be used only for Windows GUI app
base = None
if sys.platform == "win32":
    base = "Win32GUI"

替换为:

base = None
if sys.platform == "win32":
    base = "gui"

修改后重新执行打包命令即可正常运行。

方案2(兼容新旧版本cx_Freeze)

如果需要你的打包脚本同时适配不同版本的cx_Freeze,可以使用带版本判断的写法:

base = None
if sys.platform == "win32":
    import cx_Freeze
    ver_parts = [int(i) for i in cx_Freeze.__version__.split(".")[:2]]
    if ver_parts[0] >=6 and ver_parts[1] >=8:
        base = "gui"
    else:
        base = "Win32GUI"
额外优化建议

你当前配置中build_exe_options的excludes字段填入了空字符串,可能会导致打包逻辑异常、引入不必要的冗余依赖,建议删除该行或者替换为你实际需要排除的模块名。

内容的提问来源于stack exchange,提问作者gerrard87

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 00:18:00