更新Anaconda后Networkx开启with_labels参数绘图触发内核重启
NetworkX带标签绘图内核崩溃问题排查方案
该问题核心触发原因是本地环境依赖包版本兼容性冲突,未开启标签时不会调用字体渲染逻辑,因此运行正常,开启with_labels=True参数后触发字体渲染环节的崩溃,具体排查修复步骤如下:
- 第一步:校验版本匹配情况
首先查看当前环境的包版本,分别执行代码:
若当前使用networkx 2.8+搭配matplotlib 3.5以下版本,或matplotlib 3.7+搭配networkx 2.6以下版本,即可确认是版本兼容问题。Colab默认同步适配后的稳定版本组合,因此相同代码可以正常运行。import networkx as nx print(nx.__version__) import matplotlib print(matplotlib.__version__) - 第二步:版本对齐修复
先卸载当前环境的冲突包,执行conda命令:
重新安装经过兼容性验证的稳定版本组合:conda remove networkx matplotlibconda install networkx=3.1 matplotlib=3.7.2 - 第三步:字体配置修复
版本对齐后问题依旧存在的情况下,触发原因大概率为matplotlib字体缓存损坏或系统默认字体缺失,可依次执行以下操作:- 重建matplotlib字体缓存,执行代码:
import matplotlib matplotlib.font_manager._rebuild()- 绘图时手动指定可用字体,避免调用异常的系统默认字体,示例代码如下:
# Windows环境指定宋体 nx.draw(G, with_labels=True, font_family='SimSun') # macOS环境指定苹方 nx.draw(G, with_labels=True, font_family='PingFang SC') # Linux环境指定文泉驿正黑 nx.draw(G, with_labels=True, font_family='WenQuanYi Zen Hei') - 第四步:基础环境校验
上述操作均无效的情况下,说明原有Anaconda工作环境存在其他未排查到的依赖冲突,可新建干净测试环境验证:
在新环境中运行绘图代码,若运行正常直接迁移工作内容到新环境即可。conda create -n nx_test python=3.10 conda activate nx_test conda install networkx matplotlib spyder jupyter
内容的提问来源于stack exchange,提问作者ErnestoNM
相关产品推荐
相关产品推荐

