PIL在我的系统中支持JPEG。

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

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

我该如何解决这个问题?


当前回答

这个问题是很久以前发布的,大多数答案也很老了。所以当我花了几个小时试图弄清楚这个问题时,什么都没用,我尝试了这篇文章中的所有建议。

当我试图在我的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-dev、libjpeg-turbo8-dev和libjpeg8-dev。

希望这对2015年及以后的人们有所帮助!

干杯

其他回答

这是唯一对我有效的方法。安装包和重新安装PIL都不起作用。

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

sudo apt-get install libjpeg-dev

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

然后将PIL替换为pillow:

pip uninstall PIL
pip install pillow

这个问题是很久以前发布的,大多数答案也很老了。所以当我花了几个小时试图弄清楚这个问题时,什么都没用,我尝试了这篇文章中的所有建议。

当我试图在我的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-dev、libjpeg-turbo8-dev和libjpeg8-dev。

希望这对2015年及以后的人们有所帮助!

干杯

对于那些在OSX上的人,我使用以下二进制文件在系统范围内安装libpng和libjpeg:

OSX的libpng & libjpeg

因为我已经安装了PIL(通过pip on a virtualenv),我运行:

pip uninstall PIL
pip install PIL --upgrade

这解决了解码器JPEG不可用的错误。

更新(4/24/14):

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

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

查看下面的答案以获取更多信息:pip安装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

对于Fedora

安装先决条件 Sudo DNF install make automake GCC GCC -c++ kernel-devel rpm-build libjpeg-devel zlib-devel python-devel 现在安装Pillow

Sudo PIP安装枕头

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

对于那些使用Mac OS Mountain Lion的人,我使用zeantsoi的答案,但它不起作用。

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

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