【问题标题】:OSError: decoder jpeg not available on WindowsOSError:解码器 jpeg 在 Windows 上不可用
【发布时间】:2015-08-13 19:42:43
【问题描述】:

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

OSError:解码器 jpeg 不可用

我该如何解决这个问题?


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

【问题讨论】:

  • 这是您自己的博文吗?你是逐字复制的吗?
  • +1 我不知道是谁给它 -1 没有解释。可能是因为无耻的插头。我们鼓励您回答自己的问题。 Windows 上的 python 生态系统需要这样的帖子来帮助消除减速带。
  • 有人对这个问题投了赞成票,因为“不清楚你在问什么”。如果我倾向于猜测,我会猜测反对票(即使来自反对票的其他人)是针对此的,而不是关于作者身份的任何问题。 (但作者身份仍然应该很清楚。我建议将其移到答案中。)虽然我不同意近距离投票,但我可以看到它们来自哪里。我们收到了很多个问题,其中包含一个简短的描述+一条错误消息,这会导致一大堆基于假设的答案。
  • 有助于使问题看起来更好的一件事是将答案的开头移到问题中,例如(在此处解释)“我已尝试重新安装并注意到摘要说。 .. jpeg 未安装。我该如何解决这个问题?这样,正在搜索错误消息的人仍然会遇到这个问题,而只是偶然发现它的人很可能不会对问题的内容有任何疑问,因为它会缩小到相当具体的内容。

标签: python django pillow


【解决方案1】:

简短说明

这是因为 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(编辑:需要创建,见 cmets)

并将它们复制到 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 支持清理和重建 Pillow

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

再一次,安装 Pillow 包并完成设置。 JPEG 支持现已推出。

--- JPEG support available

【讨论】:

  • +1,我不知道解决方案的正确性(*nix 上的 python 是我的一杯茶)。但是您花时间标记您的博文,并在一个网站上与全世界分享,让人们有更多机会找到它。做得好。一旦遇到此问题的人搜索它,您将获得更多认可。
  • @duhaime,感谢您的加入。我相应地进行了编辑。
  • @twobob 很抱歉,这真的是在占用内存,我现在无法访问 Windows 机器。我确实记得pip install pillow 会安装 PIL 并处理更多依赖项,但我不知道这是否会带来这种依赖关系。对不起!
  • @twobob 我认为您对外部链接的看法是正确的。你想用这些笔记发布答案以防他们帮助别人吗?不管怎样,我希望你能跑起来!
猜你喜欢
  • 1970-01-01
  • 2020-05-29
  • 1970-01-01
  • 1970-01-01
  • 2014-10-27
  • 1970-01-01
  • 2014-09-22
  • 2012-06-21
  • 1970-01-01
相关资源
最近更新 更多