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

Python 3.7.9导入matplotlib时出现Pillow版本冲突报错问题

问题根因

这个报错属于版本校验逻辑触发的误报,并非真的存在Pillow版本不匹配。
Pillow的_imaging扩展加载时会做严格的字符串全等校验:比对C扩展内置的核心版本字符串、Python层PIL包的版本字符串,二者完全一致才会正常加载。你看到的Core version值两侧带双引号就是问题核心——校验时实际比对的是"9.2.0"(带引号)和9.2.0(不带引号),字符串不相等才抛出了版本不匹配的错误。
这个异常基本都出在Conda虚拟环境中,触发原因是环境内存在Pillow安装残留:通常是之前混装过pip源、conda源不同构建版本的Pillow,或者conda缓存的旧构建文件未清理,导致C扩展读取到的版本字符串被额外包裹了引号。

验证步骤

先执行以下命令确认问题,注意命令要运行在Jupyter Notebook实际调用的Python环境中:

  • 查看当前环境Pillow的安装路径与版本:
from PIL import Image
print(Image.__version__)
print(Image.__file__)
  • 查看C扩展层读取到的原始版本值,确认引号问题:
from PIL import _imaging
print(repr(_imaging.__version__))

如果第二条命令输出为'"9.2.0"'(外层为repr输出的单引号,内部版本号自带双引号),即可确认是多余引号导致的校验失败。

解决方案

按优先级从高到低尝试:

  • 彻底清理残留后重装Pillow(最稳定的方案,Conda环境优先选这个)
    先反复执行卸载命令,直到提示环境中无Pillow相关包,彻底清除残留:
    conda remove pillow --force -y
    pip uninstall pillow -y
    
    清理conda缓存后,从conda-forge源重新安装匹配版本的Pillow和Matplotlib:
    conda clean -a -y
    conda install -c conda-forge pillow=9.2.0 matplotlib -y
    
  • 修复Jupyter内核绑定问题
    部分场景下报错是因为Notebook调用的内核并非你安装依赖的Conda虚拟环境,执行以下命令重新注册内核:
    conda install ipykernel -y
    python -m ipykernel install --user --name=你的虚拟环境名称
    
    重启Jupyter后,在内核列表中选择刚注册的对应虚拟环境内核再运行代码。
  • 临时救急修复
    如果暂时不方便重装包,可以找到第一步输出的PIL路径下的Image.py文件,定位到版本校验的代码段,在比对前给核心版本字符串增加strip('"')处理,去掉多余的双引号再做比对即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 16:57:23