【问题标题】:Cannot get jpeg support with PIL on OSX在 OSX 上无法通过 PIL 获得 jpeg 支持
【发布时间】:2013-03-19 05:54:54
【问题描述】:

我正在尝试运行具有 PIL 库和 jpeg 支持的 Google App Engine,以便利用 GAE 中的图像模块。

这是我到目前为止所做的:

  1. 我下载了PIL 1.1.7 的压缩包并解压缩并使用python setup.py install 安装它。但是我注意到输出显示没有可用的 jpeg 支持。于是我戳了一下README,得知需要安装libjpeg。

  2. 然后我下载了jpeg-7 的源代码并构建了它。在运行makemake install 之前,我配置了以下标志:configure --enable-shared --enable static。我最初在没有这些标志的情况下进行了配置和构建,但我发现许多来源声称需要这样做才能让 PIL 识别 OSX 上的 libjpeg,所以我运行了 make cleanmake distclean 并重新配置了这些标志并重新构建。

  3. 然后我尝试重新安装 PIL。我导航到我提取 PIL 源代码的目录。在 setup.py 中,我将行 JPEG_ROOT 更改为指向 /usr/local/bin (安装 jpeg 的位置,但看到 PIL 需要库而不是二进制文件,我后来重复了第 3 步,但使用 /usr/local/lib 并再次使用 @987654333 @ 作为最后一次尝试)并运行 python setup.py cleanpython setup.py buildpython setup.py install。这似乎工作正常。输出声称有 jpeg 支持。但是,当我启动 GAE 时,PIL 工作正常,但我无法获得 jpeg 支持。 PIL 安装脚本的输出在这里:

--

Jays-MacBook-Air:Imaging-1.1.7 jay$ python setup.py install
running install
running build
running build_py
running build_ext
gcc-4.2 not found, using clang instead
--- using frameworks at /System/Library/Frameworks
--------------------------------------------------------------------
PIL 1.1.7 SETUP SUMMARY
--------------------------------------------------------------------
version       1.1.7
platform      darwin 2.7.3 (v2.7.3:70274d53c1dd, Apr  9 2012, 20:52:43)
              [GCC 4.2.1 (Apple Inc. build 5666) (dot 3)]
--------------------------------------------------------------------
--- TKINTER support available
--- JPEG support available
--- ZLIB (PNG/ZIP) support available
*** FREETYPE2 support not available
*** LITTLECMS 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.
running build_scripts
running install_lib
running install_scripts
changing mode of /Library/Frameworks/Python.framework/Versions/2.7/bin/pilconvert.py to 755
changing mode of /Library/Frameworks/Python.framework/Versions/2.7/bin/pildriver.py to 755
changing mode of /Library/Frameworks/Python.framework/Versions/2.7/bin/pilfile.py to 755
changing mode of /Library/Frameworks/Python.framework/Versions/2.7/bin/pilfont.py to 755
changing mode of /Library/Frameworks/Python.framework/Versions/2.7/bin/pilprint.py to 755
running install_egg_info
Removing /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/PIL/PIL-1.1.7-py2.7.egg-info
Writing /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/PIL/PIL-1.1.7-py2.7.egg-info
creating /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/PIL.pth

但 GAE 声称不支持 jpeg,每次我运行 python selftest.py 时,它都会给我以下输出:

Jays-MacBook-Air:Imaging-1.1.7 jay$ python selftest.py
--------------------------------------------------------------------
PIL 1.1.7 TEST SUMMARY 
--------------------------------------------------------------------
Python modules loaded from ./PIL
Binary modules loaded from ./PIL
--------------------------------------------------------------------
--- PIL CORE support ok
--- TKINTER support ok
*** JPEG support not installed
--- ZLIB (PNG/ZIP) support ok
*** FREETYPE2 support not installed
*** LITTLECMS support not installed
--------------------------------------------------------------------
Running selftest:
*****************************************************************
Failure in example:
try:
 _info(Image.open(os.path.join(ROOT, "Images/lena.jpg")))
except IOError, v:
 print v
from line #24 of selftest.testimage
Expected: ('JPEG', 'RGB', (128, 128))
Got: decoder jpeg not available
1 items had failures:
   1 of  57 in selftest.testimage
***Test Failed*** 1 failures.
*** 1 tests of 57 failed.

我在这里束手无策。我已经尝试了我能想到的一切。我什至尝试将setup.py 直接指向jpeg-7 的未编译头文件,因为setup.py 中的cmets 要求libincludes 目录。我根本不明白为什么 PIL 不能使用 JPEG 支持来构建。我已经尝试了所有可以在互联网上找到的东西。从源代码构建时,我似乎经常遇到这种问题。我将不胜感激任何和所有建议(甚至是关于如何从存储库安装 PIL 或其他简单的建议 - 我厌倦了尝试从源代码构建软件并最终在我的机器上出现大量无法编译的目录好东西)。

【问题讨论】:

  • 'import PIL; 的输出是什么? PIL.__file__'?和你安装支持jpeg的PIL的地方一样吗?
  • 另外,您是否考虑过使用 macports,它只允许您调用“sudo port install py27-pil”?虽然这不是一个直接的解决方案。
  • Takashi - 是的,它们是一样的。在交互式 Python 会话中运行 import PIL 效果很好(当然 jpeg 支持除外)。尽管我确实设法使一切正常,但我考虑过使用 Macports(请参阅下面我自己的答案)。我想在这些日子里,有了我一直需要构建的所有这些软件,我不妨把它吸起来并安装 MacPorts。

标签: macos google-app-engine python-imaging-library libjpeg


【解决方案1】:

我设法弄明白了。我感到有点尴尬,但希望这将是对将来这样做的任何人的参考。

事实证明,当我运行 python setup.py build(或 setup.py install 而不先构建,如果尚未运行它似乎调用构建脚本)时,它不会覆盖已经存在的构建,并且setup.py clean 也没有删除这些(尽管我天真地假设脚本确实删除了)。我只是 rm -rf *'d 了 PIL build/ 文件夹中的所有内容,这迫使 PIL 重新开始构建。最后,PIL 听取了我的意见,并将我对JPEG_ROOT 所做的更改应用到了JPEG_ROOT,这毕竟奏效了。

【讨论】:

    猜你喜欢
    • 2012-07-26
    • 2016-01-26
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 2017-05-27
    • 1970-01-01
    • 2015-01-07
    • 2017-12-17
    相关资源
    最近更新 更多