Dash实时绘图遇numpy循环导入AttributeError问题求助
解决Dash实时图表应用的numpy循环导入AttributeError问题
问题现象
稳定运行数月的Dash实时图表应用突然报错,错误信息:
2023-02-16T13:06:06: AttributeError: partially initialized module 'numpy' has no attribute 'ndarray' (most likely due to a circular import)
报错指向go.Scatter( mode = 'lines',line = dict(dash = 'longdash'),x=xData,代码行(go为plotly.graph_objs),页面显示空白无图表。代码未显式导入numpy,但plotly依赖numpy,已尝试刷新代码、重启VMNode,无效。
排查与解决步骤
1. 修复numpy安装异常
- 先查看当前numpy版本:
pip show numpy - 卸载现有numpy后重新安装稳定版本(优先选择之前应用正常运行时的版本):
pip uninstall -y numpy pip install numpy==1.24.3 # 替换为验证过的兼容版本
2. 校验plotly与numpy的兼容性
plotly对numpy存在版本依赖,需确认二者版本匹配:
- 查看当前plotly版本:
pip show plotly - 若版本不兼容,调整plotly版本到对应兼容版:
pip install plotly==5.15.0 # 选择与numpy版本适配的稳定版
3. 排查项目内重名文件冲突
项目目录中如果存在numpy.py这类重名文件,会覆盖系统numpy模块,引发循环导入:
- 搜索项目目录:
find . -name "numpy.py" -type f - 若找到该文件,立即重命名或删除,避免模块命名冲突。
4. 清理Python缓存文件
Python的__pycache__缓存可能导致模块加载异常:
- 删除项目内所有缓存文件夹:
find . -name "__pycache__" -type d -exec rm -rf {} + - 可选:清理pip缓存
python -m pip cache purge
5. 验证xData的数据合法性
报错指向x=xData参数,需确认数据类型是否符合plotly要求:
- 在代码中添加调试代码,检查
xData的类型与内容:print(type(xData), xData[:5]) # 打印前5条数据及类型 - 若
xData为非标准序列,转换为numpy数组或Python列表:import numpy as np xData = np.array(xData) # 显式转换为numpy数组 # 或 xData = list(xData) # 转换为Python列表
内容的提问来源于stack exchange,提问作者infra mudraksh
相关产品推荐
相关产品推荐

