You need to enable JavaScript to run this app. cx_Freeze 6.6搭配WinPython打包出现递归错误是什么原因?
优惠活动
大模型
产品
解决方案
定价
更多

cx_Freeze 6.6搭配WinPython打包出现递归错误是什么原因?

问题说明

你遇到的是WinPython与cx_Freeze 6.6及以上版本的已知兼容性问题。核心原因是WinPython的库路径结构、预装预编译模块的打包方式和官方Python存在差异,cx_Freeze 6.6重构了依赖扫描逻辑,递归遍历WinPython的依赖链时会触发递归深度超限。

解决方案
  • 调整递归深度限制
    在setup.py文件最开头添加递归深度配置,提高递归上限避免触发报错,示例代码:
    import sys
    sys.setrecursionlimit(10000)
    # 后续保留原有的setup.py代码
    
  • 优化依赖扫描规则
    在build_exe_options中添加excludes配置,排除无需打包的冗余模块,减少扫描范围,修改后的配置示例:
    build_exe_options = {"packages": ["os","numpy","pandas","ezdxf","tkinter"],
                "excludes": ["unittest", "pytest", "tkinter.test", "pandas.tests", "numpy.tests"],
                'include_files':[
                os.path.join(PYTHON_INSTALL_DIR, 'DLLs', 'tk86t.dll'),
                os.path.join(PYTHON_INSTALL_DIR, 'DLLs', 'tcl86t.dll'),
                os.path.join(os.getcwd(),'GABARITS/Gabarit_46.dxf'),
                os.path.join(os.getcwd(),'index.ico')]
                }
    
  • 降级cx_Freeze版本
    卸载当前高版本cx_Freeze,安装兼容性更好的6.5.3版本,执行命令:
    pip install cx_Freeze==6.5.3
    该版本和WinPython3.8/3.9适配性良好,不会触发递归错误。
  • 精简WinPython路径配置
    打开WinPython安装目录下python-xxx.amd64\Lib\site-packages\winpython.pth文件,注释掉项目用不到的额外库路径,减少cx_Freeze的扫描路径范围。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.22 00:45:02