根本原因是matplotlib未安装到Jupyter当前内核所用的Python环境,而非未安装;应先运行import sys; print(sys.executable)确认路径,再用该路径对应的python -m pip install matplotlib或!conda install matplotlib(conda环境优先),并确保%matplotlib inline等后端配置正确。

matplotlib 在 Jupyter Notebook 中无法 import,根本原因几乎总是:它没装到当前内核用的 Python 环境里。不是“没装”,而是“装错了地方”。
在 Notebook 单元格里直接用 !pip install matplotlib
最快速验证方式,适合临时调试或 demo 环境。
- 执行
!pip install matplotlib后,立刻import matplotlib.pyplot as plt测试;如果报ModuleNotFoundError,说明当前内核没走这个 pip 路径(常见于 conda 环境但用了系统 pip) - 加
-i https://pypi.tuna.tsinghua.edu.cn/simple/能绕过超时,但镜像源必须配全:--trusted-host pypi.tuna.tsinghua.edu.cn缺一不可 -
!pip list | grep matplotlib比pip list更准——因为!pip调用的是当前 shell 的 pip,而 notebook 内核可能指向另一个环境
确认并切换到正确的 Python 环境再装
90% 的“装了却 import 不了”问题出在这里:Jupyter 内核和你终端里默认的 pip 不是一回事。
- 先运行
import sys; print(sys.executable),输出类似/opt/anaconda3/envs/myenv/bin/python—— 这才是你要对准的目标路径 - 别在终端敲
pip install matplotlib,而要:/opt/anaconda3/envs/myenv/bin/python -m pip install matplotlib - 如果是 conda 环境,优先用
!conda install matplotlib,尤其当你装opencv或numba时,conda 对二进制依赖处理更稳
%matplotlib inline 和 %matplotlib widget 的区别
装完 matplotlib 只是第一步;不设后端,plt.show() 可能黑屏、卡死或根本不出图。
-
%matplotlib inline是默认且最稳的选择:图表以静态 PNG 嵌入 cell 输出区,适合分享、导出 PDF/HTML -
%matplotlib widget需额外装ipympl:!pip install ipympl,然后重启 kernel 才生效;否则会报错ModuleNotFoundError: No module named 'ipywidgets' - 用
widget时,plt.ion()和实时刷新才真正起作用;但远程服务器或无 GUI 环境下会失败,别硬上
Mac / Linux / Windows 各平台容易漏掉的点
不是所有系统都默认支持 GUI 后端,尤其 headless 服务器或 Docker 容器。
- Mac 上用
pip install matplotlib可能装出macosx后端,但 Jupyter 里不兼容;强制切后端:import matplotlib; matplotlib.use('Agg')(放import matplotlib.pyplot之前) - Linux 服务器没装
libfreetype6-dev或libpng-dev,pip install matplotlib会编译失败;先apt-get install libfreetype6-dev libpng-dev - Windows 上 Anaconda 默认带
matplotlib,但如果你删过 env 或重装过 Python,conda activate base后再conda install matplotlib比 pip 更可靠
真正卡住人的,从来不是“怎么装”,而是“装给谁”。sys.executable 打印出来的那串路径,就是唯一真相。其他所有方法,都是围绕它打转。


















