Pycharm无法用pip安装PIL以及安装Pillow之后依然报错“No module named 'Pillow'”的诡异问题

首先声明,本人遇到的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

上一篇:解决 Qpython pillow 报错“cannot import name ‘_imaging‘ from pil“


下一篇:简单有趣的小项目,用Python六行代码分解GIF美女动图,初学者的福音