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

时间:2012-01-18 18:24:20

标签: python jpeg python-imaging-library pillow

PIL在我的系统中支持JPEG。

每当我上传时,我的代码都失败了:

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

我该如何解决这个问题?

15 个答案:

答案 0 :(得分:480)

libjpeg-dev需要能够使用枕头(或PIL)处理jpegs,因此您需要安装它然后重新编译枕头。似乎在Ubuntu 14.04上需要libjpeg8-dev

如果您仍在使用PIL,那么您最近应该使用枕头,所以在按照这些说明进行切换之前先pip uninstall PIL,或者如果您有充分的理由坚持PIL然后更换“枕头“下面有”PIL“。

在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-mart建议使用--no-cache-dir)。

答案 1 :(得分:63)

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

libpng & libjpeg for OSX

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

pip uninstall PIL
pip install PIL --upgrade

这为我解决了decoder JPEG not available错误。

更新(2014年4月24日)

较新版本的pip需要额外的标志才能从外部源下载库(包括PIL)。请尝试以下方法:

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

有关其他信息,请参阅以下答案:pip install PIL dont install into virtualenv

更新2

如果在OSX Mavericks上,您需要将ARCHFLAGS标记设置为@RicardoGonzales comments below

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

答案 2 :(得分:28)

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

在ubuntu上,安装所需的包:

sudo apt-get install libjpeg-dev

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

然后用枕头替换PIL:

pip uninstall PIL
pip install pillow

答案 3 :(得分:21)

以下是关于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图像时仍然无效,请检查python路径! 我的python路径错过/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/

然后,最后,它有效!!

答案 4 :(得分:16)

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

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

答案 5 :(得分:14)

Rolo的答案非常好,但是我不得不绕过pip缓存重新安装Pillow(用pip 7引入),否则它将无法正确重新编译! 命令是:

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

您可以通过阅读日志来了解Pillow是否已正确配置:

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)

答案 6 :(得分:12)

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

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

  

brew install libjpeg

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

  

pip install -I pillow

答案 7 :(得分:11)

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

安装这些并确保使用pip安装PIL,因为我是从源代码编译它的,并且由于某种原因它无法正常工作

答案 8 :(得分:9)

我已经在使用Pillow并遇到了同样的错误。 尝试按照其他人的建议安装libjpeglibjpeg-dev,但被告知已经安装了(较新的)版本。

最后,只需重新安装Pillow

sudo pip uninstall Pillow
sudo pip install Pillow

答案 9 :(得分:3)

我太新手评论zeantsoi帖子;(。所以这里他需要做的就是在OSX上解决10.9.1

  

IOError:解码器jpeg不可用

1)安装Xcode工具(打开终端并执行:xcode-select --install) - 取自这篇文章:Can't install PIL after Mac OS X 10.9

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

3)重启(不确定是强制性的)

4)使用运行pip install -I PIL重新安装PIL (因为我在遇到问题之前最初安装了PIL)

希望这有帮助,不要混淆更多...

_oho

答案 10 :(得分:2)

这个问题已经发布了很久以前,而且大多数答案都很老了。因此,当我花费数小时试图解决这个问题时,没有任何效果,我在这篇文章中尝试了所有建议。

尝试以我的Django头像形式上传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年及以后的人!

干杯

答案 11 :(得分:1)

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

我尝试了上述所有内容以及更多内容,但在许多小时之后,我意识到使用sudo pip installvirtualenv结合使用时无效。傻我。

使用sudo在新的shell 中有效启动命令(我对此的理解可能不完全正确)其中virtualenv未激活,这意味着将安装包而是全球环境。 (这搞砸了,我想我有两种不同的Pillow装置。)

我清理了一些东西,将用户更改为root并重新安装在virtualenv中,现在它可以正常工作 希望这会对某人有所帮助!

答案 12 :(得分:1)

对于Fedora

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

sudo pip install pillow

注意 - 对于libjpeg和zlib,我们在Fedora / CentOS / Red Hat中安装 libjpeg-devel zlib-devel

答案 13 :(得分:0)

首先,除了卸载Python之外,我还必须删除隐藏文件夹user / appData中的python文件夹(这会产生巨大的麻烦)。然后我安装了WinPython Distribution:http://code.google.com/p/winpython/,其中包括PIL

答案 14 :(得分:0)

对于那些在Mac OS Mountain Lion上的人,我跟随了zeantsoi的anwser,但它不起作用。

我最终得到了这篇文章的解决方案:http://appelfreelance.com/2010/06/libjpeg-pil-snow-leopard-python2-6-_jpeg_resync_to_restart/

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