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
我该如何解决?
Answers:
需要libjpeg-dev才能处理带有枕头(或PIL)的jpeg,因此您需要先安装它,然后重新编译枕头。在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 32位:
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
)。
pip install
,但是随后的卸载和(重新)安装速度很快。无论如何,直到我跑了,上面的方法才对我不起作用pip install --no-cache-dir pillow
。祝好运!
对于OSX上的操作系统,我使用以下二进制文件来在系统范围内安装libpng和libjpeg:
因为我已经安装了PIL(通过virtualenv上的pip),所以运行:
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
以启用其他解码器)。
然后用枕头更换PIL:
pip uninstall PIL
pip install pillow
pip install pillow --upgrade
。
以下是在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/
然后,终于可以了!!
在Fedora 17上,我必须先安装libjpeg-devel
然后重新安装PIL
:
sudo yum install --assumeyes libjpeg-devel
sudo pip-python install --upgrade PIL
Rolo的回答非常好,但是我不得不绕过pip缓存(pip 7引入)来重新安装Pillow,否则它将无法正确地重新编译!!!该命令是:
pip install -I --no-cache-dir -v 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)安装了所需的库。
apt-get install libjpeg-dev
apt-get install libfreetype6-dev
apt-get install zlib1g-dev
apt-get install libpng12-dev
安装这些文件并确保使用pip安装PIL,因为我是从源代码编译它的,由于某种原因它不起作用
我太新手,无法评论zeantsoi post;(。因此,这里他需要做的工作才能在10.9.1上的OSX上解决
IOError:解码器jpeg不可用
1)安装Xcode工具(打开您的终端并执行: 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 重新安装PILpip install -I PIL
(就像我在出现问题之前最初安装PIL一样)
希望有帮助,不要混淆更多...
_oho
这个问题是在很久以前发布的,而且大多数答案也很老。因此,当我花数小时试图弄清楚这一点时,没有任何效果,并且我尝试了本文中的所有建议。
尝试以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年及以后的人有所帮助!
干杯
同样的问题在这里,JPEG support available
但是仍然得到了IOError: decoder/encoder jpeg not available
,除了我使用枕头而不是PIL。
我尝试了以上所有方法,但经过多个小时,我意识到与结合使用sudo pip install
不能按预期工作virtualenv
。傻我
使用sudo
有效会在未激活virtualenv 的新外壳中启动命令(我的理解可能并不完全正确),这意味着这些软件包将安装在全局环境中。(这把事情弄糟了,我想我有2个不同的Pillow安装。)
我清理了所有内容,将用户更改为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-devel和zlib-devel软件包。
首先,除了卸载Python之外,我还必须删除隐藏文件夹user / appData中的python文件夹(这很麻烦)。然后,我安装了WinPython发行版:http : //code.google.com/p/winpython/,其中包含PIL
对于Mac OS Mountain Lion上的用户,我遵循了zeantsoi的提示,但是它不起作用。
我最终以这篇文章的解决方案结束:http : //appelfreelance.com/2010/06/libjpeg-pil-snow-leopard-python2-6-__jpeg_resync_to_restart/
现在,我很高兴为jpeg运行脚本!