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

Dev*_*evX 68 python python-imaging-library

我得到了:

IOError: decoder zip not available
Run Code Online (Sandbox Code Playgroud)

当我尝试绘制图像并保存到PIL中的jpeg时.有关如何解决此问题的任何想法?在查看/上传图片时,PIL过去一直很适合我.

Cor*_*ory 115

sudo pip uninstall PIL
sudo pip install pillow 
Run Code Online (Sandbox Code Playgroud)

^^为我修好了.

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

编辑:有一个值得注意的API差异.PIL将Image公开为顶级命名空间,因此您可以

import Image # in PIL only
Run Code Online (Sandbox Code Playgroud)

from PIL import Image  # in pillow or PIL
Run Code Online (Sandbox Code Playgroud)
  • 谢谢,Leopd!

  • 小API差异 - `import Image`在PIL中工作,而不是枕头.枕头需要`来自PIL import Image` (7认同)
  • 解决了我的问题!这比手动编译PIL简单得多.谢谢! (4认同)
  • 在运行枕头安装之前,我建议使用"sudo apt-get install libjpeg-dev zlib1g-dev"安装zlib和jpeg dev头文件.这将确保.png和.jpg导出正常工作并编译. (4认同)
  • 对OS X Mavericks没有帮助:( (3认同)

小智 39

在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
Run Code Online (Sandbox Code Playgroud)

  • 枕头对我不起作用,但这个确实如此.谢谢! (4认同)
  • 对于懒惰:sudo apt-get install libjpeg-dev zlib1g-dev (2认同)

Joh*_*hao 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
--------------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)

注意有一行:*** 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
Run Code Online (Sandbox Code Playgroud)

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

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


Jon*_*ric 13

它可能只需要zip解码器来保存jpeg.我想我需要在OS X中按照这些步骤来预览jpegs.

这可能意味着你需要:


Joh*_*ang 7

我遇到了同样的问题.在我看来,枕头和枕头('p'中的不同情况)是两种不同的包装.所以,如果你使用Pillow,pip install pillow可能没有用.这是我的解决方案:

$ pip uninstall pillow
$ pip uninstall Pillow
$ sudo apt-get install libjpeg-dev zlib1g-dev
$ pip install -I Pillow
Run Code Online (Sandbox Code Playgroud)

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

第三行是安装两个必需的包.

Forth是重新安装Pillow.

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