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

cx_Freeze打包含numpy的Python程序遇递归深度超限问题求助

解决cx_Freeze打包numpy引发的RecursionError问题

1. 直接增加递归深度(类似PyInstaller的.spec方式)

当然可以像PyInstaller那样调整递归深度,直接在setup.py最顶部加上递归深度修改代码就行,这能直接绕过numpy编译时的递归溢出问题:

import sys
sys.setrecursionlimit(5000)  # 要是还报错可以继续调高,比如设为10000

加完之后再导入cx_Freeze的相关模块。

2. 调整cx_Freeze的打包配置

除了改递归深度,还可以通过调整打包参数来规避问题:

  • 不要把numpy放进压缩包:把zip_include_packages里的"numpy"移除,同时显式指定打包numpy包,避免压缩时触发递归逻辑:
    build_exe_options = {
        "includes": ["tkinter", "matplotlib", "pyvisa", "PIL", "cmath", "sympy", "scipy", "numpy"],
        "zip_include_packages": ["encodings", "PySide6"],
        "packages": ["numpy"]
    }
    
  • 排除numpy的非必要子模块:如果还是有问题,可以尝试排除numpy里递归较深的测试、工具类子模块(前提是你的程序不用这些):
    "excludes": ["numpy.testing", "numpy.distutils"]
    

3. 升级cx_Freeze版本

旧版cx_Freeze对numpy的递归处理存在bug,直接升级到最新稳定版大概率能解决问题:

pip install --upgrade cx_Freeze

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 01:52:53