报出"IOError:decoder zip not available"的错误,搜索后好像是说 PIL 没有正确的找到 zlib 文件,于是 remove、reinstall 好几遍,但始终不得要领。谁能解释一下原因?该怎么解决?

2014-10-12 02:58:10 +08:00
 hsu
详细的错误信息:
File "/usr/local/lib/python2.7/dist-packages/PIL/Image.py", line 679, in convert
self.load()
File "/usr/local/lib/python2.7/dist-packages/PIL/ImageFile.py", line 189, in load
d = Image._getdecoder(self.mode, d, a, self.decoderconfig)
File "/usr/local/lib/python2.7/dist-packages/PIL/Image.py", line 385, in _getdecoder
raise IOError("decoder %s not available" % decoder_name)
IOError: decoder zip not available

Pillow 和 PIL 都试过,如果把 PIL 卸了只留 Pillow,就提示找不到 Image,比这个错误更奇怪。

系统是 Debian 7。

不知不觉弄到好晚,睡觉去先。
4936 次点击
所在节点    问与答
12 条回复
ryangao
2014-10-12 05:43:58 +08:00
去装 anaconda 吧,Pillow 什么都是打好包的二进制版本。
reorx
2014-10-12 10:52:32 +08:00
看起来像是 PIL 在安装的时候没有找到 zlib 的 dev 库,导致有关 zip 的模块安装不全导致的,用 apt-cache search zlib- | grep dev 看看有关 zlib 的 dev 库叫什么(应该就叫 zlib-dev,长期不用 debian 怕记错),然后 dpkg -s <package name> 看看有没有装,没有的话那应该就是这个问题了,先安装 zlib dev,然后卸载 PIL 和 Pillow,最后重新编译安装两个库。
happywowwow
2014-10-12 13:36:33 +08:00
之前我也装过PIL 缺什么就去找装什么 折腾一下午
后面 用pip 装了个pillow 世界都安静了。。。。。。
julyclyde
2014-10-12 14:16:12 +08:00
zip和zlib没啥关系
hsu
2014-10-12 14:52:34 +08:00
@reorx 把那些包都安上了,现在连 Pillow 都安不上了。。

creating build/temp.linux-i686-2.7/libImaging

gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -DHAVE_LIBJPEG -DHAVE_LIBZ -I/tmp/pip_build_root/Pillow/libImaging -I/usr/include -I/usr/local/include -I/usr/include/python2.7 -I/usr/include/i386-linux-gnu -c _imaging.c -o build/temp.linux-i686-2.7/_imaging.o

_imaging.c:76:20: fatal error: Python.h: No such file or directory

compilation terminated.

error: command 'gcc' failed with exit status 1
hsu
2014-10-12 14:52:59 +08:00
@happywowwow 好麻烦的说
hsu
2014-10-12 14:59:18 +08:00
@reorx 安装了python-dev包,就把 Pillow 装好了。现在变成:ImportError: No module named Image ,目测还需要把 PIL装上,装好后估计又是之前的错误。。

你说的重新编译安装是指下载源码,自己编译吗?
reorx
2014-10-12 15:20:18 +08:00
Python.h: No such file or directory

这个应该是缺少 python 的 dev 库,再装上 python-dev 试试?
hsu
2014-10-12 15:44:35 +08:00
@reorx 我现在的主要问题是 Pillow 安装了,没生效。

/usr/local/lib/python2.7/dist-packages$ python -c "import Image; im = Image.open('/usr/share/pixmaps/debian-logo.png'); im.load()"
Traceback (most recent call last):
File "<string>", line 1, in <module>
ImportError: No module named Image
reorx
2014-10-12 16:20:52 +08:00
我看到 Pillow 文档里写到,它的使用方式是:

from PIL import Image

所以是不是你 import 的方式错了?你可以 ls /usr/local/lib/python2.7/dist-packages 看看,如果里面有 PIL 和 Pillow-2.x.x.dist-info 的话,说明 Pillow 是安装了的。

https://pillow.readthedocs.org/handbook/tutorial.html
14
2014-10-12 17:33:15 +08:00
遇到过这类问题
首先安装Pillow之后要安装系统库才能支持zlib/png/jpen等等
sudo apt-get install libjpeg libjpeg-dev libfreetype6 libfreetype6-dev zlib1g-dev

然后Pillow是这样调用的

from PIL import Image
hsu
2014-10-12 20:19:53 +08:00
@reorx
@14 实在懒得折腾,换了一个虚拟机,就跨过这个问题了,面向另一个问题了。。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/138402

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX