Python Image Library fails with message “decoder JPEG not available” - PIL
PIL在我的系统中支持JPEG。
每当我上传时,我的代码都失败了:
1 2 3 | File"PIL/Image.py", line 375, in _getdecoder raise IOError("decoder %s not available" % decoder_name) IOError: decoder jpeg not available |
我该如何解决这个问题?
libjpeg-dev需要能够使用枕头(或PIL)处理jpegs,因此您需要安装它然后重新编译枕头。似乎在Ubuntu 14.04上需要libjpeg8-dev
如果您仍在使用PIL,那么您最近应该使用枕头,所以在按照这些说明进行切换之前首先
在Ubuntu上:
1 2 3 4 5 6 7 | # 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:
1 2 3 | 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:
1 2 3 | 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/ |
然后重新安装枕头:
1 | pip install --no-cache-dir -I pillow |
(编辑包括来自评论的反馈。感谢Charles Offenbacher指出这与32位不同,而t-mart建议使用
对于OSX上的那些人,我使用以下二进制文件来获得系统安装的libpng和libjpeg:
用于OSX的libpng和libjpeg
因为我已经安装了PIL(通过virtualenv上的pip),我跑了:
1 2 | pip uninstall PIL pip install PIL --upgrade |
这解决了我的
更新(2014年4月24日):
较新版本的pip需要额外的标志才能从外部源下载库(包括PIL)。请尝试以下方法:
1 | pip install PIL --allow-external PIL --allow-unverified PIL |
有关其他信息,请参阅以下答案:pip install PIL不要安装到virtualenv中
更新2:
如果在OSX Mavericks上,你需要将
1 | ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future pip install PIL --allow-external PIL --allow-unverified PIL |
这是对我有用的唯一方法。安装包并重新安装PIL不起作用。
在ubuntu上,安装所需的包:
1 | sudo apt-get install libjpeg-dev |
(您可能还需要安装
然后用枕头替换PIL:
1 2 | pip uninstall PIL pip install pillow |
以下是关于ubuntu 12.04的工作:
1 2 3 4 5 6 | 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支持avaliable",这意味着它的工作原理。
但是,如果在编辑jpeg图像时仍然无效,请检查python路径!
我的python路径错过
编辑:
最后,它的确有效!
在Fedora 17上我必须安装
1 2 | sudo yum install --assumeyes libjpeg-devel sudo pip-python install --upgrade PIL |
Rolo的答案非常好,但是我不得不绕过pip缓存重新安装Pillow(用pip 7引入),否则它将无法正确重新编译!
命令是:
1 | pip install -I --no-cache-dir -v Pillow |
您可以通过阅读日志来查看枕头是否已正确配置:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | 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安装libjpeg(包管理系统)
brew install libjpeg
重新安装枕头(我用枕头代替PIL)
pip install -I pillow
1 2 3 4 | apt-get install libjpeg-dev apt-get install libfreetype6-dev apt-get install zlib1g-dev apt-get install libpng12-dev |
安装这些并确保使用pip安装PIL因为我从源代码编译它,并且由于某种原因它不起作用
我已经使用
尝试按照其他人的建议安装
最后所需要的只是重新安装
1 2 | sudo pip uninstall Pillow sudo pip install Pillow |
我太新手评论zeantsoi帖子了;(。所以这里他需要做的就是在OSX上解决10.9.1
IOError: decoder jpeg not available
1)安装Xcode工具(打开你的终端并执行:
2)从以下链接安装libpng和libjpeg包(组合安装程序):http://ethan.tira-thompson.com/Mac_OS_X_Ports.html
3)重启(不确定是强制性的)
4)使用run
希望这有帮助,不要混淆更多......
_oho
这个问题已经发布了很久以前,而且大多数答案都很老了。因此,当我花费数小时试图解决这个问题时,没有任何效果,我在这篇文章中尝试了所有建议。
尝试以我的Django头像形式上传JPG时,我仍然遇到标准的JPEG错误:
1 2 | raise IOError("decoder %s not available" % decoder_name) OSError: decoder jpeg not available |
然后我检查了Ubuntu 12.04的存储库,并注意到了
1 | sudo apt-get install libjpeg62 libjpeg62-dev |
安装这些已删除的
希望这有助于2015年及以后的人!
干杯
对于Fedora
安装先决条件
现在安装枕头
注 - 对于libjpeg和zlib,我们在Fedora / CentOS / Red Hat中安装libjpeg-devel和zlib-devel包
同样的问题,
我尝试了上述所有内容以及更多内容,但经过几个小时后,我意识到使用
使用
我清理了一些东西,将用户更改为root并重新安装在virtualenv中,现在它可以正常工作。
希望这会对某人有所帮助!
对于Mac OS Mountain Lion上的那些人,我跟随了zeantsoi的anwser,但它不起作用。
我终于得到了这篇文章的解决方案:http://appelfreelance.com/2010/06/libjpeg-pil-snow-leopard-python2-6-_jpeg_resync_to_restart/
现在,我很高兴为jpeg运行我的脚本!
首先,除了卸载Python之外,我还必须删除隐藏文件夹user / appData中的python文件夹(这会产生巨大的麻烦)。然后我安装了WinPython Distribution:http://code.google.com/p/winpython/,其中包含PIL