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

使用cx_Freeze打包Dash Plotly项目时遇递归深度超限错误求助

解决cx_Freeze打包Dash/Plotly时的RecursionError问题

以下是几个经过验证的解决思路:

  • 提升Python递归深度限制
    在你的setup.py最顶部添加以下代码,直接扩大允许的递归深度:

    import sys
    sys.setrecursionlimit(5000)  # 可根据情况调整到更高值,比如10000
    

    这个方法能快速绕过cx_Freeze扫描依赖时触发的递归溢出问题。

  • 精简cx_Freeze的依赖扫描范围
    在setup()的build_exe参数里,明确指定需要打包的核心模块,并排除无关依赖,减少递归扫描的工作量:

    from cx_Freeze import setup, Executable
    
    build_exe_options = {
        "includes": ["dash", "plotly", "dash_core_components", "dash_html_components", "dash.dependencies"],
        "excludes": ["tkinter", "numpy", "pandas"],  # 排除你项目中未使用的库
        "zip_include_packages": ["*"],
        "zip_exclude_packages": []
    }
    
    base = "Win32GUI" if sys.platform == "win32" else None
    
    setup(
        name="your_dash_app",
        version="0.1",
        description="Your Dash application",
        options={"build_exe": build_exe_options},
        executables=[Executable("app.py", base=base)]
    )
    
  • 升级cx_Freeze到最新版本
    旧版本的cx_Freeze对Dash/Plotly的动态导入支持不完善,执行以下命令更新:

    pip install --upgrade cx_Freeze
    

    新版本修复了大量依赖扫描时的递归问题。

  • 检查项目代码中的循环引用
    排查你的Dash应用代码,看是否存在模块间的循环导入(比如A模块导入B,B又导入A),或者回调函数的循环依赖。这类问题在运行时可能不明显,但会被cx_Freeze的依赖扫描机制放大,触发递归溢出。

内容的提问来源于stack exchange,提问作者Kai-Chun Lin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 12:19:55