【问题标题】:PIL selftest.py fails for Centos 6 64-bit Error: Jpeg Decoder not AvailablePIL selftest.py 因 Centos 6 64 位错误而失败:Jpeg 解码器不可用
【发布时间】:2013-01-23 09:15:33
【问题描述】:

我在尝试让 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 文件,但这也不起作用。我在我们的服务器托管地点与技术人员来来回回,他们不理解这个问题,这就像对着墙说话。我真的被困住了。我唯一没有尝试过的是画中画,但我没有尝试过,因为我不知道它是如何工作的。所以我想避免这种情况。

是否存在兼容性问题或我没有完全正确的设置?

感谢您的帮助。

--更新--

这几天再次解决这个问题 我已经测试了 Centos 5 和 6 32 位,一切都像魅力一样安装,但 64 位我仍然遇到问题。

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

【问题讨论】:

  • "(版本兼容吗?)" 看着PIL Homepage,我看到一个专门针对2.4 的下载链接。是你安装的那个版本吗?编辑:哎呀,那只是Windows,所以我猜不是。但至少这表明它可能在 2.4 上运行。

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


【解决方案1】:

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

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

【讨论】:

  • 其实时机很好,有机会我会试一试的。
【解决方案2】:

就我而言,我们不支持 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

【讨论】:

  • 您使用哪个版本的 python 进行 PIL 自测?这就是关键,当然你可以让 PIL 在 64 位上工作,但你能让 PIL 在 64 位上与 python 2.4 一起工作吗?
  • 抱歉,我们不适合使用 2.4,所以也许这就是重点
【解决方案3】:

经过广泛的测试,这是不可能的。

我确信它可以完成,但是将其关闭所需的步骤会非常密集,以至于很难保证服务器/系统的稳定性。

问题确实出在 64 位系统上。如果将 python 2.4 编译为 32 位,则 Python-Imagining 将与 python 2.4 一起使用。然而,即使你将 Python-2.4 编译成 32 位,它也很难使用这些库,因为 Centos 中的所有内容都是为 64 位架构构建的。并且获取这些额外的库很麻烦,因为存储库不包含您需要让它工作的结构。只是,烦人。兜兜转转是不可行的,花在支持这种跛行系统上的时间被浪费了。并可能使系统处于危险之中。

不,无法在 64 位机器上安装 PIL for Python 2.4。

【讨论】:

    猜你喜欢
    • 2012-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多