PIL在我的系统中支持JPEG。
每当我做一个上传,我的代码失败:
File "PIL/Image.py", line 375, in _getdecoder
raise IOError("decoder %s not available" % decoder_name)
IOError: decoder jpeg not available
我该如何解决这个问题?
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需要能够使用pillow(或PIL)处理jpeg,因此您需要安装它,然后重新编译pillow。在Ubuntu 14.04上似乎也需要libjpeg8-dev
如果你仍然在使用PIL,那么你现在应该使用pillow,所以在按照这些说明切换之前,首先卸载PIL,或者如果你有一个很好的理由坚持使用PIL,那么将“pillow”替换为“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
如果这不起作用,试试下面的一个,这取决于你的Ubuntu是64位还是32位。
对于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)。
其他回答
我已经在使用Pillow,得到了同样的错误。 尝试按照其他人的建议安装libjpeg或libjpeg-dev,但被告知已经安装了(更新的)版本。
最后只需要重新安装Pillow:
sudo pip uninstall Pillow
sudo pip install Pillow
首先,除了卸载python,我还必须删除隐藏文件夹user/appData中的python文件夹(这造成了巨大的麻烦)。然后我安装了WinPython Distribution: http://code.google.com/p/winpython/,其中包含PIL
这个问题是很久以前发布的,大多数答案也很老了。所以当我花了几个小时试图弄清楚这个问题时,什么都没用,我尝试了这篇文章中的所有建议。
当我试图在我的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
在Mac OS X Mavericks(10.9.3)上,我通过以下方法解决了这个问题:
通过brew安装libjpeg(包管理系统)
编译libjpeg
重新安装枕头(我用枕头代替PIL)
pip安装-I枕