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

运行plt.subplots出现UnicodeDecodeError错误,终端正常仅Spyder/Jupyter报错

问题排查与解决思路

该报错的核心触发逻辑是:Spyder/Jupyter Lab运行代码时,matplotlib生成的inline图片需要通过内核序列化为JSON格式传输给前端界面渲染,JSON序列化阶段误将PNG格式图片的二进制字节流当成UTF-8编码的字符串解码(PNG文件的首字节固定为0x89,与报错内容完全匹配)。终端运行无报错是因为终端直接调用系统GUI后端渲染图片,无需走JSON序列化传输流程。

可按以下优先级排查解决:

  • 验证问题根因:在原有代码后新增一行plt.close()重新运行,如果不再报错,即可确认是inline图片序列化的问题,直接执行后续修复步骤
  • 修复依赖包兼容性问题(最高概率解决):近期更新过依赖包的用户优先尝试,执行命令降级simplejson到兼容版本:pip install simplejson==3.17.6,新版simplejson的字节序列化逻辑变更会触发该类解码错误。如果降级后仍有问题,执行命令升级内核相关依赖:pip install --upgrade matplotlib_inline ipykernel jupyter_client
  • 修改inline图片输出格式:在导入matplotlib前添加以下配置,改用SVG格式输出图片,绕过PNG二进制解码问题:
import matplotlib
matplotlib.use('module://matplotlib_inline.backend_inline')
import matplotlib_inline
matplotlib_inline.backend_inline.set_matplotlib_formats('svg')
  • 检查系统默认编码配置:运行代码import sys; print(sys.getdefaultencoding()),确认输出为utf-8,如果输出不符,在系统环境变量中新增PYTHONUTF8=1后重启Spyder/Jupyter Lab即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 17:24:07