升级python成像库(PIL)时,它告诉我“JPEG支持不可用”

时间:2013-12-24 01:25:35

标签: python python-imaging-library

使用ubuntu 13.10,python 2.7.5:

>>> import _imaging, Image
>>> from PIL import Image, ImageDraw, ImageFilter, ImageFont
>>> im = Image.new('RGB', (300,300), 'white')
>>> draw = ImageDraw.Draw(im)
>>> font = ImageFont.truetype('arial.ttf', 14)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python2.7/dist-packages/PIL/ImageFont.py", line 218, in truetype
    return FreeTypeFont(filename, size, index, encoding)
  File "/usr/local/lib/python2.7/dist-packages/PIL/ImageFont.py", line 134, in __init__
    self.font = core.getfont(file, size, index, encoding)
  File "/usr/local/lib/python2.7/dist-packages/PIL/ImageFont.py", line 34, in __getattr__
    raise ImportError("The _imagingft C module is not installed")
**ImportError: The _imagingft C module is not installed**
>>>

那么为什么会这样呢?我该如何解决?我按照this thread底部的以下说明进行了操作:

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

但在升级PIL时,看看我看到的内容:

--------------------------------------------------------------------
PIL 1.1.7 SETUP SUMMARY
--------------------------------------------------------------------
version       1.1.7
platform      linux2 2.7.5+ (default, Sep 19 2013, 13:48:49)
              [GCC 4.8.1]
--------------------------------------------------------------------
*** TKINTER support not available
*** JPEG support not available
*** ZLIB (PNG/ZIP) support not available
*** FREETYPE2 support not available
*** LITTLECMS support not available
--------------------------------------------------------------------

支持所有这些 项目是否正常?我该如何解决这个问题?

3 个答案:

答案 0 :(得分:9)

PIL基本上已经死了,前叉Pillow就是你应该使用的。您需要通过

导入它
from PIL import Image, ...

它维护PIL的所有功能,并添加了更多功能,包括Python 3兼容性。此外,它正在积极开发中,与PIL不同,因此您发现的任何错误实际上都有可能得到修复 - 与功能请求相同。

您可以通过运行

安装它(在卸载PIL之后)
pip install Pillow

我相信Ubuntu有一个软件包,但我的VM目前让我头疼,我无法检查......

答案 1 :(得分:2)

根据this question at AskUbuntu

  

事实证明,APT安装将库放在/ usr / lib / x86_64-linux-gnu下,PIL将在/ usr / lib /中搜索它们。所以你必须为PIL创建符号链接才能看到它们。

换句话说,PIL显然不了解现代Ubuntu,或者实际上大多数64位linux。


您可能想要做的是:

  • 按照MattDMo的建议切换到枕头,
  • 使用Ubuntu软件包进行PIL(python-imaging),而不是尝试通过pip进行安装,或
  • 同时使用Pillow的Ubuntu软件包(如果有的话)。

检查packages.ubuntu.compython-imaging包实际上是Saucy(13.10)上的Pillow 2.0.0。事实上,它是任何Raring或更晚的枕头;只有人们仍然使用12.x或更早版本而被PIL困住的人。所以,如果你这样做:

$ sudo pip uninstall PIL
$ sudo apt-get install python-imaging

...它会让你获得Pillow,并且只需一步即可完成所需的任何依赖。


如果你不想做任何这些,你应该首先重新考虑这个决定,因为这可能是一个错误,然后看看那个答案所建议的解决方法。特别是,您安装到/ usr / lib目录中的库的符号链接可能就是您所需要的。所以,例如:

$ sudo pip uninstall PIL
$ sudo apt-get install libjpeg-dev
$ sudo ln -s /usr/lib/x86_64-linux-gnu/libjpeg.so /usr/lib/libjpeg.so
$ # repeat for the various other libraries, but JPEG is the one you asked about
$ sudo pip install PIL

或者,您可以修补PIL本身,因为链接问题的一些答案显示。特别是,添加以下两行:

add_directory(library_dirs, "/usr/lib/x86_64-linux-gnu")
add_directory(library_dirs, "/lib/x86_64-linux-gnu")

...添加/usr/local/lib/usr/lib后的行。

但是,如果您打算使用修补后的PIL,为什么不使用Pillow,它已经解决了这个问题以及其他许多问题?

答案 2 :(得分:0)

Mac OS X的附加说明

在Mac OS X上,您通常会安装其他软件,例如 使用“fink”工具的libjpeg或freetype,然后它最终进入 “/ SW”。如果您已在其他地方安装了库,则可能有 在构建之前调整“setup.py”文件。

Windows的附加说明

在Windows上,您需要调整“setup.py”中的ROOT设置 文件,使其找到外部库。见评论 文件了解详情。

确保使用相同的内容构建PIL和外部库 用于Python解释器的运行时链接选项 (通常是/ MD,在Visual Studio下)。

请注意,Windows的大多数Python发行版都包含库 为Microsoft Visual Studio编译。你可以获得免费的快递 Visual Studio版本:

http://www.microsoft.com/Express/

要使用其他工具链构建扩展程序,请参阅“使用” Windows上的非Microsoft编译器“distutils手册中的部分:

http://www.python.org/doc/current/inst/non-ms-compilers.html

有关如何使用the构建扩展的其他信息 流行的MinGW编译器,请参阅:

http://mingw.org (compiler)
http://sebsauvage.net/python/mingw.html (build instructions)
http://sourceforge.net/projects/gnuwin32 (prebuilt libraries)