导入PIL.Image失败。在使用keras-tensorflow时遇到此问题。

77
我正在学习lynda.com上的一些课程,使用PyCharmCE环境中的Keras-TensorFlow进行深度学习,但是遇到了问题。出现以下错误信息:

raise ImportError('Could not import PIL.Image. ' ImportError: Could not import PIL.Image. The use of array_to_img requires PIL.

我已经检查过其他人是否遇到了相同的错误,但是使用 pip 安装 pillow 的命令 pip install Pillow 对我没有任何帮助。

MacBook-Pro-de-Rogelio:~ Rogelio$ pip install Pillow Requirement already satisfied: Pillow in ./anaconda3/lib/python3.6/site-packages MacBook-Pro-de-Rogelio:~ Rogelio$

有解决方案吗?


你是否在安装Pillow时使用了与你正在使用的TensorFlow实例相同的环境? 在Anaconda中,人们经常教你在单独的环境中安装TensorFlow和Keras。 你必须在同一环境中安装Pillow。 - Daniel Möller
如果您确认第一个问题,可以尝试卸载pillow并重新安装。 - Daniel Möller
一个类似的问题可以在这里找到:https://dev59.com/I1gR5IYBdhLWcg3wm-S6 - Eulenfuchswiesel
15个回答

142

你所需做的就是安装pillow:

pip install pillow

那你应该已经准备好了。在搜索了数小时后,我找到了这个。


3
在尝试跟随《Python深度学习》一书第5.2.4章节时,这也解决了我的问题。 - bit_scientist
1
太好了,在我安装'pil'而不是pillow之前,我找到了这个答案——我的conda环境差点被完全摧毁。 - eric
4
在我的conda环境中,conda install pillow 对我有效。请注意,在事情能够正常工作之前,我不得不重新启动Spyder。 - eric
7
如果您正在使用 Jupyter Notebook,您还需要重新启动内核才能使其生效。 - Q. Qiao
1
@eric 从控制台中重新启动内核就足够了。 - Canbey Bilgili

24
我遇到了完全相同的错误,我通过以下方式解决了它:
1)在您的Jupyter Notebook中运行以下命令:
import sys
from PIL import Image
sys.modules['Image'] = Image 

2) 运行以下两行代码来确保它们正确指向同一个目录(如果不是,那是因为你的PIL库过旧,正在干扰Pillow库)

from PIL import Image
print(Image.__file__)

import Image
print(Image.__file__)

3)如果一切工作正常,那么两个导入打印应该指向相同的Python3目录,请继续操作。 否则: 3.a)进入您的操作系统控制台和conda环境(确保您正在您想要的conda环境中工作):

conda uninstall PIL
conda uninstall Pillow
conda install Pillow

您现在应该已经成功安装了Pillow的所有库,并解决了与PIL相关的任何问题。

3.b) 现在尝试再次执行jupyter笔记本的代码,现在导入路径应该完全相同。

4) 现在,在操作系统控制台/终端中,请确保您所需的conda环境处于活动状态,然后运行以下命令:

conda install keras
conda install tensorflow

5) 再次运行你的Jupyter笔记本脚本,现在应该已经修复并正常工作了!

如果还是无法工作,那么很可能是因为你打开了一个不指向正确环境的Jupyter笔记本内核。解决这个问题,应该就能正常工作了!


23

如果在Anaconda环境中遇到此问题,请使用

conda install pillow 

并重新开放


4
我在使用keras + tensorflow + miniconda时遇到了类似的问题。 我按照这个问题中的建议:https://github.com/asataniAIR/Image_DL_Tutorial/issues/4,在conda管理控制台中进行了pip安装。 然后我输入:
pip install --upgrade tensorflow keras numpy pandas sklearn pillow

在anaconda提示符下,在Python代码中添加from sklearn.preprocessing import LabelEncoder而不是from PIL import Image

2

这是适用于我个人的解决方法。卸载conda版本的pillow,然后安装pip版本的pillow,接着重启一下你的Jupyter Notebook的内核。

conda uninstall --force pillow


pip install pillow

1

我在使用Pycharm时遇到了同样的问题。即使尝试了互联网上的各种方法,我仍然无法解决它。当我在Jupyter笔记本上运行代码时,它要求我安装模块SciPy。我安装了它,现在代码在Pycharm上可以正常工作。


1

pip install pillow 这也解决了我的问题。

我正在使用 Jupyter Notebook 和 Tensorflow2.0 Keras。为了设置背景,当我尝试在 Keras 中使用内置的 image.load_img() 函数时,出现了这个错误。在执行此安装后,您还需要重新启动内核。


似乎更适合作为一条评论。 - mate00

1
我有同样的问题,好消息是它可以很容易地解决。 我的问题是: 我在使用Anaconda Navigator启动的jupyter笔记本进行python项目时,在python程序中使用了以下函数
image_ = image.load_img(image_path, target_size=(224,224))
然后我收到了这个错误“raise ImportError('Could not import PIL.Image. ' ImportError: Could not import PIL.Image。”
解决方法: 首先,在你用于jupyternotebook的环境中使用以下命令卸载pillow
conda uninstall --force pillow
然后再使用以下命令安装它 pip install pillow
(在anaconda提示符中输入这些命令) 然后关闭所有notebooks和Anaconda Navigator,在之前安装过的环境中打开Anaconda Navigator,在该环境中启动jupyter notebook并运行代码即可。

0

可能是版本问题,我曾经在使用TensorFlow 3.2.0时遇到过这个问题,将pillow设置为8.2.0在卸载/重新安装/重启的过程中对我有所帮助。


0

安装这些:

$ pip install pillow -U

$ pip install pathlib -U

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接