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

Python 关于PIL错误--IOError:解码器zip不可用,python,python-imaging-library,Python,Python Imaging Library,我得到的是: IOError: decoder zip not available 当我试图绘制一幅图像并将其保存为PIL格式的jpeg时。如何解决这个问题有什么想法吗? 过去,在查看/上传图像时,PIL对我来说效果很好。它可能只需要zip解码器来保存jpeg。我想我需要在OSX中按照这些步骤来预览JPEG 这可能意味着您需要: 下载 下载zlib库 构建PIL 在Ubuntu 64位中使用zlib库安装PIL的更多详细信息: 对于懒惰的人(归功于apt get的@meawoppl):

我得到的是:

IOError: decoder zip not available
当我试图绘制一幅图像并将其保存为PIL格式的jpeg时。如何解决这个问题有什么想法吗?
过去,在查看/上传图像时,PIL对我来说效果很好。

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

这可能意味着您需要:

  • 下载
  • 下载zlib库
  • 构建PIL

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

对于懒惰的人(归功于
apt get
的@meawoppl):

^^帮我修好了

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

编辑:有一个显著的API差异。PIL将图像公开为顶级名称空间,因此您可以

import Image # in PIL only
但是

  • 谢谢你,利奥波德 苹果电脑上的

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

我在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)支持不可用
, 这意味着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)支持


参考资料:

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

安装brew:

安装pip:

有了这些,您可以执行以下操作:

sudo brew install lzlib     # installs zlib
pip uninstall PIL
pip install --no-index -f http://dist.plone.org/thirdparty/ -U PIL
在那之后,它工作得很好。有关第三行的解释,请检查以下答案:


在我的案例中,我只是移除了python映像,确保libz已经准备好,然后重新安装PIL,更多细节可以在我的帖子中看到:

(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
--------------------------------------------------------------------

我遇到了同样的问题。在我看来,枕头和枕头(p中的不同大小写)是两个不同的包装。因此,如果您使用的是枕头,
pip安装枕头
可能没有帮助。以下是我的解决方案:

$ pip uninstall pillow
$ pip uninstall Pillow
$ sudo apt-get install libjpeg-dev zlib1g-dev
$ pip install -I Pillow
前两行是移除任何枕头或枕头包装

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

四是重新安装枕头


注意,如果您使用的是virtualenv,
pip安装/卸载
必须在virtualenv下运行

我使用64位Ubuntu14.04LTS桌面版,我尝试了Johnny Zhao的答案。
什么时候

我有一个错误:

can't find freetype/fterrors.h
我在/usr/include/

您可以通过以下方式解决此问题:

sudo ln -s /usr/include/freetype2 /usr/include/freetype

然后安装将成功

原因可能是您安装的枕头没有zlib支持

在CentOS 7:

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

如果您正在使用Web应用程序,请重新启动您的Web服务器以应用。

我尝试了2.8.0版,但效果良好

pip install -Iv Pillow==2.8.0

ubuntu18
上,我不得不安装
pillow2.8.1

pip install Pillow==2.8.1
尝试:

$sudo-apt-get-install-python-dev
$sudo apt get安装libjpeg8 dev
$sudo ln-s/usr/lib/x86_64-linux-gnu/libjpeg.so/usr/lib
从3.0.0版开始,枕头需要libjpeg。如果问题仍然存在,则可能存在某些包不兼容。节省一些时间,然后尝试以前的版本:

$pip安装枕==2.8.1

修复了我的问题!这比手动编译PIL简单得多。非常感谢。API差异很小-
导入图像
适用于PIL,而不是枕头。pillow需要PIL导入图像中的
在运行pillow安装之前,我建议使用“sudo-apt-get-install-libjpeg-dev-zlib1g-dev”安装zlib和jpeg-dev头文件。这将确保.png和.jpg导出正常工作并在中编译。在OS X小牛上没有帮助:(如果您在安装zlib后重新安装Pillow,您需要重新编译Pillow:
pip--no cache dir install Pillow
适合懒人:sudo apt get install libjpeg dev zlib1g devi如果您恰好是为pebble开发的,并且因为zip解码器不可用而来到这里,请安装这些库并重新安装Pillow。安装Pillow again将重建包含这些依赖项的库。如果这对您不起作用,请查看JohnPang为我提供的答案。请详细说明。很难说清楚您在说什么。而且
sudo brew安装lzlib
只是说“brew:未找到命令”在我的上。你可以下载zlib,然后用pip重新安装pil。你不需要从源代码构建它。这篇文章帮助我解决了pil的PNG和JPEG问题。(解码器zip不可用,解码器JPEG不可用)如果您看到一个
\u imagingft.c:73:31:致命错误:freetype/fterrors.h:在这之后没有这样的文件或目录
错误,只需再链接一个库:
ln-s/usr/include/freetype2/usr/include/freetype2/freetype
(如果您有
安装python imaging
,我相信会发生这种情况)这是因为您安装了python imaging,并且安装了
apt get install python imaging
。如果您自己安装
libjpeg-dev-libfreetype6-dev-zlib1g-dev
,而不安装所有python imaging,则不会出现此错误。这可能很明显,但如果您使用的是virtualenv,“pip-install-upgrade”应该在virtualenv中完成。
sudo ln -s /usr/include/freetype2 /usr/include/freetype
yum install zlib zlib-devel
pip install Pillow --upgrade
pip install -Iv Pillow==2.8.0
pip install Pillow==2.8.1