PIL:ImportError:_imaging扩展是为另一个版本的枕头或PIL构建的

时间:2014-11-03 18:51:00

标签: python python-2.7 python-imaging-library

我收到错误:

---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
<ipython-input-4-0f6709e38f49> in <module>()
----> 1 from PIL import Image

C:\Anaconda\lib\site-packages\PIL\Image.py in <module>()
     61     from PIL import _imaging as core
     62     if PILLOW_VERSION != getattr(core, 'PILLOW_VERSION', None):
---> 63         raise ImportError("The _imaging extension was built for another "
     64                           " version of Pillow or PIL")
     65 

ImportError: The _imaging extension was built for another  version of Pillow or PIL

每当我尝试使用PIL库时。我试图加载和处理一堆.gif,以及我现在正在尝试的内容如下:

from PIL import Image

尝试采用不同的方法,通过scipy:

import scipy.ndimage as spnd
os.chdir('C:\\WeatherSink\\data\\')
spnd.imread('2014-11-03-0645.gif')

失败:

---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
<ipython-input-3-23c383b79646> in <module>()
      1 os.chdir('C:\\WeatherSink\\data\\')
----> 2 spnd.imread('2014-11-03-0645.gif')

C:\Anaconda\lib\site-packages\scipy\ndimage\io.pyc in imread(fname, flatten, mode)
     36         from PIL import Image
     37     except ImportError:
---> 38         raise ImportError("Could not import the Python Imaging Library (PIL)"
     39                           " required to load image files.  Please refer to"
     40                           " http://pypi.python.org/pypi/PIL/ for installation"

ImportError: Could not import the Python Imaging Library (PIL) required to load image files.  Please refer to http://pypi.python.org/pypi/PIL/ for installation instructions.

第一种方法指导我安装PIL版本。我尝试模拟getattr(...),并返回None。因此,我并不感到意外,因为它不如运作。 但有谁知道如何修复&#39;错误?

我在win7上运行,通过conda管理python2.7。我也试图删除并重新安装软件包,但输出没有任何变化。

非常感谢帮助。

5 个答案:

答案 0 :(得分:18)

这只是一个安装问题。

如果未安装,请先在系统上安装pip。它是available for Windows also

升级你的numpy,pip / pillow,scipy:

pip install -U numpy
pip install -U pil/pillow
pip install -U scipy

Windows的最佳选择是使用anaconda

我认为pip已经安装在conda中。这将解决您的系统版本问题。

In [1]: from PIL import Image

In [2]: import scipy.ndimage as spnd

In [3]: x = spnd.imread('ppuf100X91.gif')

In [4]: print x
[[255 255 255 ..., 255 255 255]
 [255 255 255 ..., 255 255 255]
 [255 255 255 ..., 255 255 255]
 ..., 
 [255 255 255 ..., 255 255 255]
 [255 255 255 ..., 255 255 255]
 [255 255 255 ..., 255 255 255]]

答案 1 :(得分:9)

这是python 3.6中的一个问题 编辑文件:C:\Anaconda\lib\site-packages\PIL\Image.py 并更改代码:

if PILLOW_VERSION != getattr(core, 'PILLOW_VERSION', None):
     raise ImportError("The _imaging extension was built for another "
                        " version of Pillow or PIL")

将其更改为:

if core.PILLOW_VERSION != getattr(core, 'PILLOW_VERSION', None):
     raise ImportError("The _imaging extension was built for another "
                        " version of Pillow or PIL")

这将解决问题。 此致

答案 2 :(得分:3)

也许您的某个依赖项要求在Pillow之后安装PIL和PIL,导致您的站点包dir发生冲突。我假设你看到了这个错误,因为import语句是从合法的PIL安装导入_imaging而不是Pillow安装。

过去我遇到过需要PIL或Pillow的冲突包的麻烦。枕头当然是首选套装。我会看一下你的包的依赖关系。如果你能找到一个依赖于PIL的东西,我会提交一个拉取请求,它将依赖关系更改为Pillow,或者甚至可以创建自己的fork来进行更改。对于我的情况,分叉是我选择的选项,因为该项目似乎长期没有任何活动。

最终,您希望消除对PIL包的任何依赖(因为它不再有效),而不是Pillow。

答案 3 :(得分:3)

这个问题是因为PIL / pillow的Python包是你的系统的Up或Down版本,并且由于这个问题是在你的系统中生成的。

尝试检查此命令:

sudo apt-get install python-PIL

检查此包是否安装。如果已安装,请尝试使用以下命令删除:

sudo apt-get remove python-PIL

检查这是否有效,以便从系统中移除PIL /枕头包。

最后这个命令将帮助您解决这个包问题:

sudo apt-get autoremove python-PIL

然后重新安装PIL / Pillow包:

sudo apt-get install python-pil

这可以帮助您解决问题。

答案 4 :(得分:0)

我实际上是运行代码时使用的虚拟环境。很多时候计算机将运行Anaconda路径而不是Python3。因此,您可以在调用代码之前在命令提示符下尝试python或python 3。示例:python3 image.py。 或者,您可以删除anaconda:D。