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

Python3.6+Matplotlib读取JPG报错,已装Pillow仍无法解决

解决Matplotlib在Spyder中无法读取JPG图片的问题

嘿,我之前也碰到过一模一样的情况,尤其是在Win7+多Python环境的组合里,咱们一步步来排查:

1. 确认Pillow真的装到了Spyder用的Python环境里

Win7下的Spyder经常会出现「全局装了包,但Spyder依赖的Python环境没同步」的问题。你可以在Spyder的IPython控制台里输入这段代码验证:

import PIL
print(PIL.__version__)

如果报错,说明Pillow没装对环境。解决办法:

  • 打开Anaconda Prompt(如果你用Anaconda管理环境),先激活Spyder对应的环境(比如默认的base环境:activate base)
  • 执行pip install pillow或者conda install pillow重新安装
  • 安装完成后一定要重启Spyder,再测试

2. 强制Matplotlib调用Pillow的读取接口

有时候Matplotlib会优先用内置的PNG阅读器,哪怕装了Pillow也不切换。你可以在代码开头加一段配置:

import matplotlib
# 部分Win7环境需要指定后端,先试试这个
matplotlib.use('TkAgg')
# 直接用plt的imread替代mpimg.imread
from matplotlib.pyplot import imread

然后替换读取代码:

image = imread(r'C:\Users\xxx\Python Code\mountain.jpg')

3. 绕开Matplotlib,直接用Pillow读取转数组

如果上面的方法都不行,咱们换个思路:用Pillow读取图片后转成NumPy数组,再给Matplotlib用:

from PIL import Image
import numpy as np
import matplotlib.pyplot as plt

# 用Pillow读取图片
img_pil = Image.open(r'C:\Users\xxx\Python Code\mountain.jpg')
# 转成Matplotlib兼容的数组格式
image = np.array(img_pil)

print('This image is: ',type(image), 'with dimensions:', image.shape)
plt.imshow(image)
plt.show()

4. 检查Matplotlib版本的兼容性

Python3.6对应的Matplotlib如果版本过低(比如2.0以下),对Pillow的支持可能有bug。你可以在Spyder里查版本:

import matplotlib
print(matplotlib.__version__)

如果版本低于2.2,建议升级:

pip install --upgrade matplotlib

升级后记得重启Spyder生效。

5. 最后排查路径和图片本身

虽然你说另一台电脑正常,但还是可以试试:

  • 把图片移到无空格、无特殊字符的路径下(比如C:\temp\mountain.jpg),避免路径解析出错
  • 用系统自带的图片查看器打开图片,确认没有损坏

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:49:48