使用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
相关产品推荐
相关产品推荐

