4

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

OSError:解码器 jpeg 不可用

我怎样才能解决这个问题?


这在我提交的第二次被否决了。所以我不得不提以下几点(我有我的骄傲!):

4

1 回答 1

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 库包,解压到一个临时位置。

复制头文件

在 jpeg 包中搜索三个名为

  • jpeglib.h
  • jmorecfg.h
  • jconfig.h(编辑:需要创建,见注释)

并将它们复制到Python 安装目录的包含文件夹中(可能是"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 支持清理和重建 Pillow

太棒了,现在我们只需要将新构建的Release\jpeg.lib 复制到我们的 Python-libs 目录中(可能是"C:\Python34\libs\")。 注意: “库”,而不是“库”。

再一次,安装 Pillow 包并注意设置。JPEG 支持现在可用。

--- JPEG support available
于 2014-03-21T12:36:12.177 回答