关于 PIL 错误 -- IOError: decoder zip not available

Posted

技术标签:

【中文标题】关于 PIL 错误 -- IOError: decoder zip not available【英文标题】:About the PIL Error -- IOError: decoder zip not available 【发布时间】:2011-04-02 10:19:58 【问题描述】:

我得到了:

IOError: decoder zip not available

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

【问题讨论】:

【参考方案1】:
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!

【讨论】:

解决了我的问题!这比手动编译 PIL 要简单得多。谢谢! API 的小差异 - import Image 在 PIL 中工作,而不是在枕头中。枕头需要from PIL import Image 在运行枕头安装之前,我建议使用“sudo apt-get install libjpeg-dev zlib1g-dev”安装 zlib 和 jpeg dev 头文件,这将确保 .png 和 .jpg 导出正常工作并编译进去。 对 OS X Mavericks 没有帮助 :( 如果是安装zlib后重新安装Pillow,需要重新编译Pillow:pip --no-cache-dir install Pillow【参考方案2】:

在 Ubuntu 64 位中使用 zlib 库安装 PIL 的详细信息:

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

对于懒人(apt-get@meawoppl 致谢):

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

【讨论】:

懒人:sudo apt-get install libjpeg-dev zlib1g-dev 如果您碰巧正在为 pebble 开发并来到这里,因为 zip 解码器不可用。安装这些库并重新安装枕头。再次安装枕头,将重建包含这些依赖项的库。 如果这对您不起作用,请查看 JohnPang 对我有用的答案。【参考方案3】:

我在 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,就会发生这种情况)【参考方案4】:

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

这可能意味着您需要:

下载the PIL source。 下载 zlib 库。 Point the PIL source to the zlib library. 构建 PIL。

【讨论】:

你可以下载 zlib 然后用 pip 重新安装 pil。您不需要从源代码构建它。 Mac OS X PIL JEPG and PNG issues,这篇文章帮助我解决了 PIL 的 PNG 和 JPEG 问题。 (解码器 zip 不可用解码器 jpeg 不可用【参考方案5】:

我遇到了同样的问题。在我看来,枕头和枕头(“p”中的不同大小写)是两个不同的包。因此,如果您使用 Pillow,pip install pillow 可能无济于事。这是我的解决方案:

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

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

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

Forth 是重新安装 Pillow。

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

【讨论】:

【参考方案6】:

我在 OS X Mavericks 上解决这个问题的方法是这样做:

安装 brew:

http://brew.sh/

安装点子:

http://www.pip-installer.org/en/latest/installing.html

有了这些,你可以这样做:

sudo brew install lzlib     # installs zlib
pip uninstall PIL
pip install --no-index -f http://dist.plone.org/thirdparty/ -U PIL

之后,它工作正常。有关第三行的解释,请查看以下答案:

https://***.com/a/2486396/290072

【讨论】:

【参考方案7】:

在 Mac 上

sudo brew install lzlib     # installs zlib
pip uninstall PIL
pip install PIL

【讨论】:

请详细说明。真的很难说出你在说什么。 sudo brew install lzlib 只是在我的身上说“brew: command not found”。【参考方案8】:

我使用的是 64bit 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

安装成功

【讨论】:

发生这种情况是因为您使用apt-get install python-imaging 安装了 python-imaging。如果您只是自行安装libjpeg-dev libfreetype6-dev zlib1g-dev 而没有所有的python 映像,您将不会收到此错误。【参考方案9】:

原因可能是你安装了没有 zlib 支持的 Pillow。

在 CentOS 7 上:

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

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

【讨论】:

这可能很明显,但如果你使用的是 virtualenv,“pip install Pillow --upgrade”应该在 virtualenv 内完成。【参考方案10】:

在我的情况下,我只是 remore python-image,确保 libz 已准备好然后重新安装 PIL,您可以在我的帖子中看到更多详细信息:

http://febru.soluvas.com/2014/03/solved-openerp-7-ioerror-decoder-zip.html

【讨论】:

【参考方案11】:

Mac OS X PIL JEPG and PNG issues(Linux 操作系统相同),这篇文章帮助我解决了 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
--------------------------------------------------------------------

【讨论】:

【参考方案12】:

我尝试了 2.8.0 版本,它运行良好

pip install -Iv Pillow==2.8.0

【讨论】:

【参考方案13】:

Ubuntu 18 上我必须安装pillow 2.8.1

pip install Pillow==2.8.1

【讨论】:

【参考方案14】:

尝试: $ 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 版本开始 Pillow 需要 libjpeg。如果问题仍然存在,则可能存在某些包不兼容问题。节省一些时间并尝试以前的版本: $ pip install Pillow==2.8.1

【讨论】:

【参考方案15】:

你应该匹配 Pillow 的版本你的 python 版本。

【讨论】:

以上是关于关于 PIL 错误 -- IOError: decoder zip not available的主要内容,如果未能解决你的问题,请参考以下文章

Python IOError错误异常原因有哪些?

RLE8 图像支持/使用 Pillow 解压(PIL fork)

多处理 IOError:错误消息长度

机器人框架[错误]意外错误:IOError:[Errno 0]错误

IOError:[Errno 套接字错误] 使用 BeautifulSoup

uwsgi IOError:写入错误