关于PIL错误-IOError:解码器zip不可用


68

我得到:

IOError: decoder zip not available

当我尝试绘制图像并将其保存到PIL中的jpeg中时。关于如何解决这个问题有什么想法吗?过去,PIL在查看/上传图像方面对我来说效果很好。

Answers:


13

它可能仅需要zip解码器来保存jpeg。我想我需要在OS X中按照以下步骤预览jpeg。

这可能意味着您需要:


1
您可以下载zlib,然后使用pip重新安装pil。您不需要从源代码构建它。
ech

Mac OS X PIL JEPG和PNG问题,这篇文章可以帮助我解决PIL的PNG和JPEG问题。(解码器zip不可用解码器jpeg不可用
isaacselement 2014年

115
sudo pip uninstall PIL
sudo pip install pillow 

^^为我修复了它。

Pillow是PIL的一个分支,与pip / setuptools兼容,并且得到了更好的维护。我还没有看到任何API差异。

编辑:有一个显着的API差异。PIL将Image公开为顶级名称空间,因此您可以

import Image # in PIL only

from PIL import Image  # in pillow or PIL
  • 谢谢Leopd!

4
解决了我的问题!这比手动编译PIL简单得多。谢谢!
surjikal 2012年

7
API差异很小-import Image适用于PIL,而不适用于枕头。枕头需要from PIL import Image
Leopd 2012年

4
运行安装枕之前,我会建议安装的zlib和JPEG开发与头“命令和apt-get安装的libjpeg-dev的的zlib1g-dev的”这将确保png格式和.jpg出口正常工作,并在被编译。
meawoppl

3
在OS X Mavericks上没有帮助:(
Petr Peller

1
如果要在安装zlib之后重新安装Pillow,则需要重新编译Pillow:pip --no-cache-dir install Pillow
2015年

41

在Ubuntu 64位中使用zlib库更详细地安装PIL:

http://obroll.com/install-python-pil-python-image-library-on-ubuntu-11-10-oneiric/

对于懒惰(学分@ meawopplapt-get):

$ sudo apt-get install libjpeg-dev zlib1g-dev

2
对于懒惰者:sudo apt-get install libjpeg-dev zlib1g-dev
meawoppl 2013年

1
如果您碰巧是为卵石开发的,请来这里,因为zip解码器不可用。安装这些库,然后重新安装枕头。再次安装枕头,将重建包含这些依赖项的库。
HyLian 2014年

如果这对您不起作用,请查看对我有用的JohnPang的答案。
Mark O'Sullivan

17

我在64位ubuntu 13.04桌面版本上遇到此问题,这是我如何解决的问题。

尝试重新安装PIL,并在重新安装后注意输出信息:

---------------------------------------------------------------------
PIL 1.1.7 SETUP SUMMARY
--------------------------------------------------------------------
version       1.1.7
platform      linux2 2.7.4 (default, Sep 26 2013, 03:20:26)
              [GCC 4.7.3]
--------------------------------------------------------------------
*** TKINTER support not available
--- JPEG support available
*** ZLIB (PNG/ZIP) support not available
--- FREETYPE2 support available
*** LITTLECMS support not available
--------------------------------------------------------------------

注意有一行:*** ZLIB (PNG/ZIP) support not available,这表示PIL是在没有ZLIB支持的情况下构建的,我通过执行以下操作对其进行了修复:

首先,您应该安装以下软件包:libjpeg-dev libfreetype6-dev zlib1g-dev

sudo apt-get install python-dev libjpeg-dev libfreetype6-dev zlib1g-dev

# create these links, if already exists, remove it and re-link it
ln -s /usr/lib/x86_64-linux-gnu/libjpeg.so /usr/lib
ln -s /usr/lib/x86_64-linux-gnu/libfreetype.so /usr/lib
ln -s /usr/lib/x86_64-linux-gnu/libz.so /usr/lib

# reinstall PIL
pip uninstall PIL
pip install PIL

这次,--- ZLIB (PNG/ZIP) support available输出中应该有一行。

参考:http : //jj.isgeek.net/2011/09/install-pil-with-jpeg-support-on-ubuntu-oneiric-64bits/


如果您_imagingft.c:73:31: fatal error: freetype/fterrors.h: No such file or directory在此之后看到错误,只需再链接一个库:(ln -s /usr/include/freetype2 /usr/include/freetype2/freetype 我相信如果您有的话,会发生这种情况apt-get install python-imaging
Nick Sweeting 2015年

8

我遇到了同样的问题。在我看来,枕头和枕头(在'p'中为不同情况)是两种不同的包装。因此,如果您使用的是枕头,pip install pillow可能无济于事。这是我的解决方案:

$ pip uninstall pillow
$ pip uninstall Pillow
$ sudo apt-get install libjpeg-dev zlib1g-dev
$ pip install -I Pillow

前两行是删除任何枕头或枕头包装。

第三行是安装两个必需的软件包。

Forth是重新安装枕头。

注意,如果使用的是virtualenv,则pip install/uninstall必须在virtualenv下运行




1

我使用64位ubuntu 14.04LTS桌面版本,并尝试了Johnny Zhao的答案。
什么时候

exec sudo easy_install PIL

我收到一个错误:

can't find freetype/fterrors.h

我在/ usr / include /中找到了freetype2

您可以通过以下方法解决它:

sudo ln -s /usr/include/freetype2 /usr/include/freetype

然后安装将成功


发生这种情况是因为您安装了python-imaging apt-get install python-imaging。如果您只是libjpeg-dev libfreetype6-dev zlib1g-dev自己安装而没有所有的python-imaging,则不会收到此错误。
Nick Sweeting 2015年

1

原因可能是您在没有zlib支持的情况下安装了Pillow。

在CentOS 7上:

yum install zlib zlib-devel
pip install Pillow --upgrade

如果您使用的是Web应用,请重新启动Web服务器以应用。


这可能很明显,但是如果您使用的是virtualenv,则应在virtualenv内部完成“ pip install Pillow --upgrade”。
肖恩


0

Mac OS X PIL JEPG和PNG问题(与Linux os相同),本帖子帮助我解决PIL的PNG和JPEG问题: 解码器zip不可用解码器jpeg不可用

在安装/重新安装PIL时,请确保JPEG和ZLIB可用:

$ cd Imaging-1.1.7
$ python setup.py build_ext -i
$ python selftest.py

--------------------------------------------------------------------
--- TKINTER support available
--- JPEG support available
--- ZLIB (PNG/ZIP) support available
*** FREETYPE2 support not available
*** LITTLECMS support not available
--------------------------------------------------------------------


0

Ubuntu 18我必须安装pillow 2.8.1

pip install Pillow==2.8.1

0

尝试: $ sudo apt-get install python-dev $ sudo apt-get install libjpeg8-dev $ sudo ln -s /usr/lib/x86_64-linux-gnu/libjpeg.so /usr/lib 从3.0.0版本开始,枕头需要libjpeg。如果问题仍然存在,则可能是程序包不兼容。节省一些时间并尝试以前的版本: $ pip install Pillow==2.8.1

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.