OSError:解码器jpeg在Windows上不可用

时间:2014-03-21 12:36:12

标签: python django pillow

我正在开发一个Django项目,最近遇到了一个令人讨厌的问题。我在我的Windows计算机上安装了Pillow库,当我尝试在我的Django模板中显示图像时意外地抛出了OSError。

  

OSError:解码器jpeg不可用

我该如何解决这个问题?


这是我提交的第二次投票。所以我觉得不得不提到以下内容(我很自豪!):

1 个答案:

答案 0 :(得分:9)

简短说明

这是因为Pillow包没有带来所需的库。这是你需要照顾的事情。因此,JPEG支持(以及其他文件格式)不可用。

要验证这一点,请在安装Pillow后查看设置摘要。如果你没有这个,simplay将重新安装包,并显示摘要。

$ sudo pip uninstall Pillow
$ sudo pip install Pillow

在摘要中我们看到我在Windows 8.1上安装了Pillow 2.3.1版。最重要的是,我们发现不支持JPEG和PNG(ZLIB)图像文件。

--------------------------------------------------------------------
PIL SETUP SUMMARY
--------------------------------------------------------------------
version      Pillow 2.3.1
platform     win32 3.4.0 (v3.4.0:04f714765c13, Mar 16 2014, 19:24:06
             [MSC v.1600 32 bit (Intel)]
--------------------------------------------------------------------
*** TKINTER support not available
(Tcl/Tk 8.6 libraries needed)
*** JPEG support not available
*** ZLIB (PNG/ZIP) support not available
*** LIBTIFF support not available
*** FREETYPE2 support not available
*** LITTLECMS2 support not available
*** WEBP support not available
*** WEBPMUX support not available
--------------------------------------------------------------------
To add a missing option, make sure you have the required
library, and set the corresponding ROOT variable in the
setup.py script.

To check the build, run the selftest.py script.

明确的解决方案

在Linux上,只需安装软件包 libjpeg-dev 并重新安装Pillow库。

但是由于我们正在使用Windows,我们需要更深入一点:我们需要下载jpeg库源代码来提供头文件并自行构建库文件。也做一些复制和粘贴。

您需要安装Visual C++ 2010 Express。无论如何,您首先需要它来构建Pillow,否则您最终会得到错误:Unable to find vcvarsall.bat

然后从Independent JPEG Group下载jpeg library package并将其解压缩到临时位置。

复制头文件

在jpeg包中搜索名为

的三个文件
  • jpeglib.h
  • jmorecfg.h
  • jconfig.h(编辑:需要创建,请参阅注释)

并将它们复制到Python安装目录的 include 文件夹中(可能是" C:\ Python34 \ include \"

构建库文件

为了能够完成后续步骤,请运行vcvarsall.bat。这将为PATH变量添加所有必需的目录。默认情况下,您在" C:\ Program Files(x86)\ Microsoft Visual Studio 10.0 \ VC \ vcvarsall.bat"

中找到此文件

现在打开一个命令行,找到之前解压缩jpeg库源的目录。执行以下两个命令:

> nmake /f makefile.vc setup-v10
> msbuild jpeg.sln

第二个命令构建所需文件并将它们放在新创建的子目录 \ Release \ 中。

使用JPEG支持清理和重建枕头

太棒了,现在我们只需要将新构建的 Release \ jpeg.lib 复制到我们的Python-libs目录中(可能是" C:\ Python34 \ libs \&# 34; )。 注意:" libs",not" Lib"。

再次安装Pillow包并负责设置夏季。现在可以使用JPEG支持。

--- JPEG support available