python - 导入错误 : The Python Imaging Library (PIL) is required to load data from jpeg files

标签 python scikit-learn

我正在尝试从 LFW dataset 中获取数据使用 scikit-learn:

from sklearn.datasets import fetch_lfw_people    
faces = fetch_lfw_people(min_faces_per_person=60)

这样做时,我收到一条导入错误消息:

The Python Imaging Library (PIL) is required to load data from jpeg files

错误信息表明我需要 pillow安装。所以我从我的 Jupyter 笔记本中安装了 pillow,如下所示:

!conda install --yes --prefix {sys.prefix} pillow

现在我可以执行 import PIL,但在尝试从 LFW 数据集获取数据时,我仍然收到相同的错误消息。

我正在使用 Python 3.6。这是完整的轨迹:

ImportError                               Traceback (most recent call last) ~\AppData\Local\Continuum\anaconda3\lib\site-packages\sklearn\datasets\lfw.py in _load_imgs(file_paths, slice_, color, resize)
    143         try:
--> 144             from scipy.misc import imread
    145         except ImportError:

ImportError: cannot import name 'imread'

During handling of the above exception, another exception occurred:

ImportError                               Traceback (most recent call last) ~\AppData\Local\Continuum\anaconda3\lib\site-packages\scipy\misc\pilutil.py in <module>()
     18 try:
---> 19     from PIL import Image, ImageFilter
     20 except ImportError:

~\AppData\Local\Continuum\anaconda3\lib\site-packages\PIL\Image.py in <module>()
     57     # and should be considered private and subject to change.
---> 58     from . import _imaging as core
     59     if PILLOW_VERSION != getattr(core, 'PILLOW_VERSION', None):

ImportError: DLL load failed: The specified module could not be found.

During handling of the above exception, another exception occurred:

ModuleNotFoundError                       Traceback (most recent call last) ~\AppData\Local\Continuum\anaconda3\lib\site-packages\sklearn\datasets\lfw.py in _load_imgs(file_paths, slice_, color, resize)
    145         except ImportError:
--> 146             from scipy.misc.pilutil import imread
    147         from scipy.misc import imresize

~\AppData\Local\Continuum\anaconda3\lib\site-packages\scipy\misc\pilutil.py in <module>()
     20 except ImportError:
---> 21     import Image
     22     import ImageFilter

ModuleNotFoundError: No module named 'Image'

During handling of the above exception, another exception occurred:

ImportError                               Traceback (most recent call last) <ipython-input-236-6d1c601c92a3> in <module>()
----> 1 faces = fetch_lfw_people(min_faces_per_person=60)

~\AppData\Local\Continuum\anaconda3\lib\site-packages\sklearn\datasets\lfw.py in fetch_lfw_people(data_home, funneled, resize, min_faces_per_person, color, slice_, download_if_missing)
    333     faces, target, target_names = load_func(
    334         data_folder_path, resize=resize,
--> 335         min_faces_per_person=min_faces_per_person, color=color, slice_=slice_)
    336 
    337     # pack the results as a Bunch instance

~\AppData\Local\Continuum\anaconda3\lib\site-packages\sklearn\externals\joblib\memory.py in __call__(self, *args, **kwargs)
    560 
    561     def __call__(self, *args, **kwargs):
--> 562         return self._cached_call(args, kwargs)[0]
    563 
    564     def __reduce__(self):

~\AppData\Local\Continuum\anaconda3\lib\site-packages\sklearn\externals\joblib\memory.py in _cached_call(self, args, kwargs)
    508                           'directory %s'
    509                         % (name, argument_hash, output_dir))
--> 510             out, metadata = self.call(*args, **kwargs)
    511             if self.mmap_mode is not None:
    512                 # Memmap the output at the first call to be consistent with

~\AppData\Local\Continuum\anaconda3\lib\site-packages\sklearn\externals\joblib\memory.py in call(self, *args, **kwargs)
    742         if self._verbose > 0:
    743             print(format_call(self.func, args, kwargs))
--> 744         output = self.func(*args, **kwargs)
    745         self._persist_output(output, output_dir)
    746         duration = time.time() - start_time

~\AppData\Local\Continuum\anaconda3\lib\site-packages\sklearn\datasets\lfw.py in _fetch_lfw_people(data_folder_path, slice_, color, resize, min_faces_per_person)
    234     target = np.searchsorted(target_names, person_names)
    235 
--> 236     faces = _load_imgs(file_paths, slice_, color, resize)
    237 
    238     # shuffle the faces with a deterministic RNG scheme to avoid having

~\AppData\Local\Continuum\anaconda3\lib\site-packages\sklearn\datasets\lfw.py in _load_imgs(file_paths, slice_, color, resize)
    147         from scipy.misc import imresize
    148     except ImportError:
--> 149         raise ImportError("The Python Imaging Library (PIL)"
    150                           " is required to load data from jpeg files")
    151 

ImportError: The Python Imaging Library (PIL) is required to load data from jpeg files

为什么我会收到此导入错误,我该如何解决?

最佳答案

您需要在您的代码中添加以下行

from PIL import Image

关于python - 导入错误 : The Python Imaging Library (PIL) is required to load data from jpeg files,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49074737/

相关文章:

machine-learning - 在机器学习中使用 Scikit 对邮政编码进行特征哈希

python - XgBoost : The least populated class in y has only 1 members, 太少

python - 使用 RFECV 和排列重要性的正确方法 - Sklearn

Python argparse : get an argument without parsing

python - python的简单图形

Python处理日期格式如 "1st, 2nd, 3rd, 4th"

python - Scikit 多类分类指标,分类报告

python - sklearn 随机森林的训练和测试数据准确度得分相同

python - 按值差异(时间戳)将列分为 N 组

python - 如何为编写器/解析器编写测试? (Python)