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'”的问题,有以下两种可能的解决办法:

  1. 检查下载Pillow的Python Interpreter和你代码运行的工程的Python Interpreter,说白了就是确保你下载安装的Pillow是现在正在运行的工程目录
  2. 检查代码里写的是不是“from Pillow import ……”,如果是,改成“from PIL import ……”再试试!

对于第一种可能的解决办法,具体操作步骤如下:

首先打开settings查看下载的Pillow的目录,如下图中的红色方框所示:

然后打开Pycharm右上角的“Edit Configurations”,如下图红色方框所示:

打开之后检查当前程序的工程目录,如下图红色方框所示:

比对settings的Python Interpreter和Configuration的Python Interpreter(即第一张图红色方框内的工程和第三张图红色方框内的工程)是否相同。

  • 78
    点赞
  • 122
    收藏
    觉得还不错? 一键收藏
  • 33
    评论
评论 33
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值