对于Centos 6 64位错误,PIL selftest.py失败:Jpeg解码器不可用

时间:2013-02-07 18:35:16

标签: centos 64-bit python-imaging-library centos6 python-2.4

我在服务器上遇到困难,试图让selftest.py成功运行。

我试图让PIL 1.1.7与Python 2.4.4一起使用(版本兼容吗?)

安装如下所示:

# python2.4 setup.py install
running install
running build
running build_py
running build_ext
--------------------------------------------------------------------
PIL 1.1.7 SETUP SUMMARY
--------------------------------------------------------------------
version       1.1.7
platform      linux2 2.4.6 (#1, Dec 21 2012, 14:54:30)
              [GCC 4.4.6 20120305 (Red Hat 4.4.6-4)]
--------------------------------------------------------------------
*** TKINTER support not available
--- JPEG support available
--- ZLIB (PNG/ZIP) support available
--- FREETYPE2 support 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 /usr/local/bin/pilconvert.py to 755
changing mode of /usr/local/bin/pilprint.py to 755
changing mode of /usr/local/bin/pilfile.py to 755
changing mode of /usr/local/bin/pilfont.py to 755
changing mode of /usr/local/bin/pildriver.py to 755
creating /usr/local/lib/python2.4/site-packages/PIL.pth

一切似乎都很方便。 Jpeg支持可用,所有人都很高兴。但是selftest.py却是另一回事:

 # python2.4 /usr/local/src/Imaging-1.1.7/selftest.py
 --------------------------------------------------------------------
 PIL 1.1.7 TEST SUMMARY rc/Imaging-1.1.7]# yum install libjpeg62-devel zlib1g-devel       libfreetype6-devel liblcms1-develp
 --------------------------------------------------------------------
 Python modules loaded from ./PIL
 Binary modules loaded from ./PIL
 --------------------------------------------------------------------
 --- PIL CORE support ok
 *** TKINTER support not installed
 *** JPEG support not installed
 *** ZLIB (PNG/ZIP) support not installed
 --- FREETYPE2 support ok
 *** 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.

我得到了可怕的Jpeg解码器。

我尝试过各种各样的事情。我将设置更改为指向不起作用的usr / lib64。我在usr / lib中创建了一些符号链接指向libjpeg.so文件,这也没用。我和我们服务器托管地点的技术人员来回走动,他们不理解这个问题,就像在墙上说话一样。我真的被卡住了。我唯一没有尝试的是PiP,但我没有尝试,因为我不知道它是如何工作的。所以我想避免这种情况。

是否存在兼容性问题或设置我不太正确?

感谢您的帮助。

- UPDATE -

这些天再次解决这个问题 我测试了Centos 5& 6 32位并且所有东西都像魅力一样安装,但64位我仍然有问题。

看起来自测试与股票python2.6一起使用但不适用于python2.4。 Pil 1.1.7与2.4.4兼容,但我认为64位的库存在问题。仍在寻找解决方案。

3 个答案:

答案 0 :(得分:0)

经过大量测试后,这是不可能的。

我确信它可以完成但是它需要采取的步骤将会非常密集,以至于难以确保服务器/系统的稳定性。

问题实际上在于64位系统。如果python 2.4被编译为32位,Python-Imagining将与python 2.4一起使用。然而,即使你将Python-2.4编译成32位,它也很难用于库,因为Centos中的所有东西都是为64拱构建的。获取这些额外的库非常麻烦,因为repos不包含使其工作所需的结构。这很烦人。围绕圈子打猎是不可行的,并且浪费了试图支持这种跛行系统所花费的时间。并且可能使系统处于危险之中。

不,在64位计算机上安装PIL for Python 2.4是不可能的。

答案 1 :(得分:0)

在我的情况下,我们不支持PIL中的所有库(CentOS 6,x64)

*** TKINTER support not available
*** JPEG support not available
--- ZLIB (PNG/ZIP) support available
*** FREETYPE2 support not available
*** LITTLECMS support not available

所以我们使用了以下内容:

yum install freetype freetype-devel libpng libpng-devel libjpeg libjpeg-devel

现在我们有了

*** TKINTER support not available
--- JPEG support available
--- ZLIB (PNG/ZIP) support available
--- FREETYPE2 support available
*** LITTLECMS support not available

答案 2 :(得分:0)

3年后,我知道,但这可以正常工作!标准构建过程不会在/usr/lib64中查找库,但在运行setup.py build时无法指定库路径,因此您需要在单独的步骤中重建二进制文件:

yum install freetype-devel libpng-devel libjpeg-turbo-devel libzip-devel lcms-devel
pip download PIL
unzip pil-1.1.7.zip
cd pil-1.1.7
./setup.py build
./setup.py build_ext -L /usr/lib64/:/usr/local/lib64 --force
./setup.py install --prefix /usr/local/python27 --force --skip-build

这是在64位的Scientific Linux 6.7上,使用从源代码编译的Python 2.7。