2013-03-19 55 views
0

我试图运行带有PIL库& jpeg支持的Google App Engine,以便使用GAE中的图像模块。无法在OSX上获得对PIL的JPEG支持

这是我迄今所做的:

  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/liblibinclude('/usr/local')作为最终尝试)并运行python setup.py clean,python 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中的注释要求libincludes目录。我简直无法弄清楚为什么PIL不能用JPEG支持构建。我尝试了所有可以在互联网上找到的东西。从源代码构建时,我似乎经常遇到这种问题。我将不胜感激任何和所有的建议(甚至是关于如何从存储库安装PIL的建议或简单的东西 - 我厌倦了试图从源代码构建软件,并结束了我的机器上大量的无法编译的目录好东西)。

+0

'import PIL的输出是什么; PIL .__ FILE__“?是否与您使用jpeg支持安装PIL的地方相同? – 2013-03-19 06:03:46

+0

另外,你有没有考虑过使用macports,它可以让你调用'sudo port install py27-pil'?但这不是一个直接的解决方案。 – 2013-03-19 06:08:05

+0

隆 - 是的,他们是一样的。在交互式Python会话中运行'import PIL'工作得很好(当然除了jpeg支持)。我已经考虑过使用Macports,尽管我确实设法让所有的东西都能正常工作(请参阅下面我自己的答案)。我认为这些日子里有一个我需要构建的所有这些软件,我不妨将其吸收并安装MacPorts。 – jayhendren 2013-03-19 06:14:20

回答

3

我设法弄清楚了这一点。我感到有点尴尬,但希望这将成为任何人在未来这样做的参考。

原来,当我跑python setup.py build(或setup.py install无需建立第一,这似乎调用构建脚本如果它没有被已经开),它不会覆盖该版本已经存在,并没有setup.py clean不删除这些(虽然我天真地认为该剧本)。我只需rm -rf *'d PIL build/文件夹中的所有内容,即强制PIL开始重新生成。最后,PIL听我说,并将我所做的更改应用到JPEG_ROOT,毕竟这是工作的。