Python图像库失败,消息“解码器JPEG不可用” – PIL

PIL在我的系统中支持JPEG。

每当我做一个上传,我的代码失败:

File "PIL/Image.py", line 375, in _getdecoder raise IOError("decoder %s not available" % decoder_name) IOError: decoder jpeg not available 

我该如何解决这个问题?

libjpeg-dev需要能够用枕头(或者PIL)来处理jpeg,所以你需要安装它,然后重新编译枕头。 在Ubuntu 14.04上似乎也需要libjpeg8-dev

如果你仍然在使用PIL,那么你现在应该真的在使用枕头了,所以首先pip uninstall PIL才能按照这些说明进行切换,或者如果你有一个很好的理由坚持使用PIL,那么用“PIL”replace“pillow”在下面)。

在Ubuntu上:

 # install libjpeg-dev with apt sudo apt-get install libjpeg-dev # if you're on Ubuntu 14.04, also install this sudo apt-get install libjpeg8-dev # reinstall pillow pip install --no-cache-dir -I pillow 

如果这不起作用,请尝试以下方法之一,具体取决于您使用的是64位还是32位的Ubuntu。

对于Ubuntu x64:

 sudo ln -s /usr/lib/x86_64-linux-gnu/libjpeg.so /usr/lib sudo ln -s /usr/lib/x86_64-linux-gnu/libfreetype.so /usr/lib sudo ln -s /usr/lib/x86_64-linux-gnu/libz.so /usr/lib 

或者对于Ubuntu 32bit:

 sudo ln -s /usr/lib/i386-linux-gnu/libjpeg.so /usr/lib/ sudo ln -s /usr/lib/i386-linux-gnu/libfreetype.so.6 /usr/lib/ sudo ln -s /usr/lib/i386-linux-gnu/libz.so /usr/lib/ 

然后重新安装枕头:

 pip install --no-cache-dir -I pillow 

(编辑包括评论的反馈。谢谢Charles Offenbacher指出这是不同的32位和t-martbuild议使用--no-cache-dir )。

对于OSX上的用户,我使用了以下二进制文件来获得全系统安装的libpng和libjpeg:

libpng&libjpeg for OSX

因为我已经安装了PIL(通过virtualenv上的点),我跑了:

 pip uninstall PIL pip install PIL --upgrade 

这解决了decoder JPEG not available错误对我来说。

更新(4/24/14)

较新版本的pip需要额外的标志来从外部源下载库(包括PIL)。 尝试以下操作:

 pip install PIL --allow-external PIL --allow-unverified PIL 

请参阅以下答案以获得更多信息: pip install PIL不要安装到virtualenv中

更新2

如果在OSX Mavericks上,您将需要将ARCHFLAGS标志设置为@RicardoGonzales注释如下 :

 ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future pip install PIL --allow-external PIL --allow-unverified PIL 

这是为我工作的唯一方法。 安装软件包并重新安装PIL不起作用。

在Ubuntu上,安装所需的软件包:

 sudo apt-get install libjpeg-dev 

(您可能还想安装libfreetype6 libfreetype6-dev zlib1g-dev来启用其他解码器)。

然后用枕头replacePIL:

 pip uninstall PIL pip install pillow 

接下来的作品在Ubuntu 12.04上:

 pip uninstall PIL apt-get install libjpeg-dev apt-get install libfreetype6-dev apt-get install zlib1g-dev apt-get install libpng12-dev pip install PIL --upgrade 

当你看到“ – JPEG支持可用”,这意味着它的作品。

但是,如果编辑jpeg图像时仍不起作用,请检查pythonpath! 我的Pythonpath错过/usr/local/lib/python2.7/dist-packages/PIL-1.1.7-py2.7-linux-x86_64.egg/ ,所以我编辑~/.bashrc添加下面的代码到这个文件:

编辑: export PYTHONPATH=$PYTHONPATH:/usr/local/lib/python2.7/dist-packages/PIL-1.1.7-py2.7-linux-x86_64.egg/

那么,最后,它的作品!

在Fedora 17上,我不得不安装libjpeg-devel ,然后重新安装PIL

 sudo yum install --assumeyes libjpeg-devel sudo pip-python install --upgrade PIL 

罗洛的答案是非常好的,但是我不得不绕过点caching(引入点7)重新安装枕头,否则将不会得到正确的重新编译! 该命令是:

 pip install -I --no-cache-dir -v Pillow 

你可以通过阅读日志来看看枕头是否已经正确configuration:

 PIL SETUP SUMMARY -------------------------------------------------------------------- version Pillow 2.8.2 platform linux 3.4.3 (default, May 25 2015, 15:44:26) [GCC 4.8.2] -------------------------------------------------------------------- *** TKINTER support not available --- JPEG support available *** OPENJPEG (JPEG2000) support not available --- ZLIB (PNG/ZIP) support available --- LIBTIFF support available --- FREETYPE2 support available *** LITTLECMS2 support not available *** WEBP support not available *** WEBPMUX support not available -------------------------------------------------------------------- 

你可以看到对jpg,tiff等的支持,因为我之前通过apt(libjpeg-dev libpng12-dev libfreetype6-dev libtiff-dev)安装了所需的库,

在Mac OS X Mavericks(10.9.3)中,我通过以下方法解决了这个问题:

通过brew (包pipe理系统)安装libjpeg

brew安装libjpeg

重新安装枕头(我用枕头代替PIL)

pip安装-I枕头

 apt-get install libjpeg-dev apt-get install libfreetype6-dev apt-get install zlib1g-dev apt-get install libpng12-dev 

安装这些,并确保安装PIP PIP,因为我从源代码编译,由于某种原因,它没有工作

我已经在使用Pillow并得到了同样的错误。 试过按照别人的build议安装libjpeglibjpeg-dev ,但被告知已经安装了一个(较新的)版本。

最后,所有这一切都是重新安装Pillow

 sudo pip uninstall Pillow sudo pip install Pillow 

我太新手评论zeantsoi后;(所以在这里,他需要做什么来解决OSX上10.9.1

IOError:解码器jpeg不可用

1) 安装Xcode工具 (打开你的terminal并执行: xcode-select --install ) – 从这篇文章中获取: 在Mac OS X 10.9之后无法安装PIL

2)从这个链接安装libpng和libjpeg包 (组合安装程序): http : //ethan.tira-thompson.com/Mac_OS_X_Ports.html

3) 重新启动 (不知道这是强制性的)

4)用run pip install -I PIL 重新安装PIL (因为在问题发生之前我已经安装了PIL)

希望这个帮助,不要混淆更多…

_oho

这个问题在不久之前就已经发布了,而且大部分的答案也都很老了。 所以当我花了几个小时试图解决这个问题,没有任何工作,我试了这个post的所有build议。

当我尝试以我的Django头像forms上传JPG时,仍然收到标准的JPEG错误:

 raise IOError("decoder %s not available" % decoder_name) OSError: decoder jpeg not available 

然后我检查了Ubuntu 12.04的资源库,注意到一些额外的libjpeg包。 我安装了这些,我的问题解决了:

 sudo apt-get install libjpeg62 libjpeg62-dev 

安装这些已删除的libjpeg-devlibjpeg-turbo8-devlibjpeg8-dev

希望这有助于在2015年和其他人!

干杯

同样的问题在这里, JPEG support available但仍然有IOError: decoder/encoder jpeg not available ,除了我使用枕头,而不是PIL。

我尝试了所有上述和更多,但几个小时后,我意识到,使用sudo pip install无法正常工作,与virtualenv结合。 我傻。

使用sudo在新的shell中有效地启动命令(我对此的理解可能不完全正确) ,因为virtualenv没有被激活,这意味着软件包将被安装在全局环境中。 (这个搞砸了,我想我有两个不同的枕头装置。)

我清理了一些东西,把用户改成了root,然后重新安装在virtualenv中,现在就起作用了。
希望这会帮助别人!

对于Fedora

安装先决条件
sudo dnf install make automake gcc gcc-c++ kernel-devel rpm-build libjpeg-devel zlib-devel python-devel
现在安装枕头

sudo pip install pillow

注 – 对于libjpeg和zlib,我们在Fedora / CentOS / Red Hat上安装libjpeg-develzlib-devel软件包

首先,我必须删除隐藏文件夹user / appData中的python文件夹(这是创build巨大的麻烦),除了卸载Python。 然后,我安装了包含PIL的WinPython发行版: http : //code.google.com/p/winpython/

对于那些在Mac OS山狮,我跟随zeantsoi的anwser,但它不起作用。

我终于结束了这篇文章的解决scheme: http : //appelfreelance.com/2010/06/libjpeg-pil-snow-leopard-python2-6-_jpeg_resync_to_restart/

现在,我很高兴地运行我的脚本为JPEG!