首先声明,本人遇到的Pycharm无法用pip安装PIL的问题和安装Pillow模块之后依然报错“No module named 'Pillow'”问题最终都得到了解决,相信很多人也遇到过,但由于系统,软件版本,运行环境等一系列问题,可能本博客的解决办法并不完全普适,但文章的最后,我总结了两种纠错方法,希望能帮助大家解决问题。
很多学习Python的同学们肯定都遇到过一个名叫PIL的模块,扩展开就是Python Image Library,字面翻译则是Python的图像库。
这个模块可以算是Python平台的图像处理标准库,优点很多,总的来说功能强大,调用简单。
于是,我就打算在Pycharm上来看看PIL的强大,从书上随便找了段代码敲进去试试。
# coding: utf-8
import sys, os
sys.path.append(os.pardir) # 为了导入父目录的文件而进行的设定
import numpy as np
from dataset.mnist import load_mnist
from PIL import Image
def img_show(img):
pil_img = Image.fromarray(np.uint8(img))
pil_img.show()
(x_train, t_train), (x_test, t_test) = load_mnist(flatten=True, normalize=False)
img = x_train[0]
label = t_train[0]
print(label) # 5
print(img.shape) # (784,)
img = img.reshape(28, 28) # 把图像的形状变为原来的尺寸
print(img.shape) # (28, 28)
img_show(img)
该代码段是做什么的先不管,总之就是从MNIST数据集中去获取数据,然后显示图像。
敲完之后自然是去Pycharm的settings里去下载PIL这个模块了。
看图说话,Pycharm的settings里确实可以搜到PIL模块,于是点击“Install Package”,但是提示无法下载:
根据经验判断,这种情况多半是这个模块被淘汰了,上网一搜,果不其然,怪本人孤陋寡闻了!
原来PIL仅支持到Python2.7,而现在大家普遍使用的肯定是Python3.x版本,自然是没法用了!
那么怎么办呢?其实有一个PIL的Fork版本模块,是一群志愿者在PIL的基础上创建的兼容版本,名叫Pillow,保留了PIL的基本特性,同时还加入了新的特性!
所以,赶紧回去Pycharm里搜索Pillow,果然也有!
于是果断安装了一个,然后将上面代码的
from PIL import Image
改成了
from Pillow import Image
接着点击运行。
本以为会见证奇迹,没想到居然报错了!看图说话:
此时我的内心是崩溃的,感觉自己被耍了,说好的Pillow代替PIL呢,怎么和说好的不一样?而且报错结果也难让人难以接受了,明明Pillow模块时有的啊!
上网搜解决办法,很多人提示说问题很可能是Pillow下载的工程目录和当下运行的程序的目录不一致。
然而经过仔细比对,目录不匹配问题并不存在!
于是接下来开始了无休止地胡乱尝试,比如说下载其他的模块,比如说打开cmd用命令行下载,比如说更新pip(我的pip确实版本旧了)……
一顿操作猛如虎之后,问题依然无法解决,而且每次报错都是告诉我,没有一个模块叫作“Pillow”!
万般无奈之下,我向女友求助,因为记得她之前处理过PIL和Pillow。
结果她告诉我,模块下载Pillow,代码写PIL!
于是,再次回到之前的完整代码,直接运行通过!
即再将
from Pillow import Image
改成
from PIL import Image
然后就输出了结果,和一张非常袖珍的图片!
讲道理,这个结局我是真的没有猜到,下载模块Pillow,但是代码写from PIL import ……
后来仔细一想,毕竟Pillow不是官方的模块,可能Fork版本就是这么神奇吧!
最后总结一下:
1. 遇到Pycharm无法下载PIL模块的问题,解决办法是改为下载Pillow模块。
2. 遇到安装了Pillow模块之后,运行代码报错提示“No module named 'Pillow'”的问题,有以下两种可能的解决办法:
检查下载Pillow的Python Interpreter和你代码运行的工程的Python Interpreter,说白了就是确保你下载安装的Pillow是现在正在运行的工程目录。
检查代码里写的是不是“from Pillow import ……”,如果是,改成“from PIL import ……”再试试!
————————————————
版权声明:本文为CSDN博主「Leonardo Liu」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/leowinbow/article/details/88321011