PIL/JPEG库:"解码器jpeg不可用"

Bri*_*n D 51 python django redhat libjpeg python-imaging-library

我尝试使用PIL在我的django应用程序中使用PIL进行一些JPEG工作,但是我得到了这个IOError ..不知道该怎么做.

""decoder jpeg not available""
Run Code Online (Sandbox Code Playgroud)

我错过了服务器上的JPEG解码器吗?如果是这样,我该如何解决?

Ant*_*nko 72

我从作者"edward"找到了这个答案

在Ubuntu上,PIL找不到jpeg库文件,即使它们已经安装完毕.解决此问题的最简单方法是在安装jpeg dev软件包后创建符号链接.所以,我需要一个额外的步骤:

对于x64 OS

pip uninstall PIL
sudo apt-get install libjpeg8-dev
sudo ln -s /usr/lib/x86_64-linux-gnu/libjpeg.so /usr/lib
pip install PIL
Run Code Online (Sandbox Code Playgroud)

对于x32 OS

pip uninstall PIL
sudo apt-get install libjpeg8-dev
sudo ln -s /usr/lib/i386-linux-gnu/libjpeg.so /usr/lib
pip install PIL
Run Code Online (Sandbox Code Playgroud)

我在Ubuntu Linux 12.04上确认这对我有用.


如果您是Mac用户 - 您需要安装Xcode和命令行工具.阅读如何做到这一点

  • `sudo ln -s /usr/lib/i386-linux-gnu/libjpeg.so/usr/lib`为我做了这份工作 (2认同)
  • Mac用户不需要安装所有XCode来编写带有PIL的简单jpeg文件.只需运行`brew install libjpeg`并按照上面的规定重新安装PIL即可启动并运行. (2认同)

Fan*_*Lin 56

您需要先安装jpeg库并重新安装PIL.例如,我正在使用CentOS,安装libjpeg,我运行

sudo yum install -y libjpeg-devel
Run Code Online (Sandbox Code Playgroud)

这取决于您使用的是什么类型的Linux.在这里你必须删除旧的PIL

rm -rf /usr/lib/python2.6/site-packages/PIL-1.1.7-py2.6-linux-x86_64.egg/
Run Code Online (Sandbox Code Playgroud)

然后安装PIL

sudo easy_install PIL
Run Code Online (Sandbox Code Playgroud)


Bry*_*yce 20

使用libjpeg在virtualenv安装pil时可以找到更强的答案

对我来说,最终在Ubutu工作的是:

pip uninstall PIL
sudo apt-get install libjpeg8-dev
pip install PIL
Run Code Online (Sandbox Code Playgroud)

Python Imaging Library(PIL)似乎对jpeg库的版本和位置非常挑剔.并且因为PIL是用C语言编写的,所以除了运行时版本之外,还需要库的开发版本.


Cha*_*rts 6

我没有sudo权限,因为我在共享的bluehost服务器上.所以我无法运行任何sudo apt-get jpeg命令.我最终跑了

pip uninstall pil
pip install pillow
Run Code Online (Sandbox Code Playgroud)

而且显然枕头能够找到对jpegs的支持.

  • 最好的答案! (2认同)
  • 实际上我仍然有:'IOError:解码器jpeg不可用'. (2认同)