zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    转《编程之美——微软技术面试心得》勘误表
    第一次 学习使用 智能指针
    test _todel
    (转 todo阅读)Android 官方博客 Android应用程序的内存分析(翻译)
    msdn snmp trap 研究可否 重入 转《Multiple Trap Registrations》
    wpbars在博客园开博客了
    创业失败的10个教训总结
    winform 的一种登录方法。
    快速建立Subversion
    (转)SQL Server 按某一字段分组取最大(小)值所在行的数据
  • 原文地址:https://www.cnblogs.com/yibeimingyue/p/14660020.html
Copyright © 2011-2022 走看看