关于 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的主要内容,如果未能解决你的问题,请参考以下文章
RLE8 图像支持/使用 Pillow 解压(PIL fork)
机器人框架[错误]意外错误:IOError:[Errno 0]错误