V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
hsu
V2EX  ›  问与答

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

  •  
  •   hsu · 2014-10-12 02:58:10 +08:00 · 5033 次点击
    这是一个创建于 3696 天前的主题,其中的信息可能已经有所发展或是发生改变。
    详细的错误信息:
    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。

    不知不觉弄到好晚,睡觉去先。
    12 条回复    2014-10-12 20:19:53 +08:00
    ryangao
        1
    ryangao  
       2014-10-12 05:43:58 +08:00 via iPhone
    去装 anaconda 吧,Pillow 什么都是打好包的二进制版本。
    reorx
        2
    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
        3
    happywowwow  
       2014-10-12 13:36:33 +08:00
    之前我也装过PIL 缺什么就去找装什么 折腾一下午
    后面 用pip 装了个pillow 世界都安静了。。。。。。
    julyclyde
        4
    julyclyde  
       2014-10-12 14:16:12 +08:00
    zip和zlib没啥关系
    hsu
        5
    hsu  
    OP
       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
        6
    hsu  
    OP
       2014-10-12 14:52:59 +08:00
    @happywowwow 好麻烦的说
    hsu
        7
    hsu  
    OP
       2014-10-12 14:59:18 +08:00
    @reorx 安装了python-dev包,就把 Pillow 装好了。现在变成:ImportError: No module named Image ,目测还需要把 PIL装上,装好后估计又是之前的错误。。

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

    这个应该是缺少 python 的 dev 库,再装上 python-dev 试试?
    hsu
        9
    hsu  
    OP
       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
        10
    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
        11
    14  
       2014-10-12 17:33:15 +08:00 via Android
    遇到过这类问题
    首先安装Pillow之后要安装系统库才能支持zlib/png/jpen等等
    sudo apt-get install libjpeg libjpeg-dev libfreetype6 libfreetype6-dev zlib1g-dev

    然后Pillow是这样调用的

    from PIL import Image
    hsu
        12
    hsu  
    OP
       2014-10-12 20:19:53 +08:00
    @reorx
    @14 实在懒得折腾,换了一个虚拟机,就跨过这个问题了,面向另一个问题了。。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   914 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 21:44 · PVG 05:44 · LAX 13:44 · JFK 16:44
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.