Python PIL找不到我的“libjpeg”

时间:2009-09-28 09:29:43

标签: python python-imaging-library

我无法使用PIL,因为它无法找到我的libjpeg!

首先,我安装了PIL默认值。当我运行selftest.py时,它给了我:

IOError: decoder jpeg not available 1
items had failures:    1 of  57 in
selftest.testimage
***Test Failed*** 1 failures.
*** 1 tests of 57 failed.

然后,我按照在线说明将PIL的setup.py更改为

JPEG_ROOT = "/usr/lib"

因为当我locate libjpeg时,这就是我得到的:

locate libjpeg 
/usr/lib/libjpeg.so.62
/usr/lib/libjpeg.so.62.0.0
/usr/lib64/libjpeg.so.62
/usr/lib64/libjpeg.so.62.0.0
/usr/share/doc/libjpeg-6b
/usr/share/doc/libjpeg-6b/README
/usr/share/doc/libjpeg-6b/usage.doc
/var/cache/yum/base/packages/libjpeg-6b-37.i386.rpm
/var/cache/yum/base/packages/libjpeg-6b-37.x86_64.rpm

所以,我再次运行setup.py install ......并selftest.py。 我仍然得到同样的错误!

5 个答案:

答案 0 :(得分:19)

您需要安装至少3个标头集。如果你想处理Tiff的话还有1个

freetype,libjpeg,zlib所有这些都将在CentOS的以下软件包中包含:

== 32位:   zlib的-devel.i386   的libjpeg-devel.i386   freetype的-devel.i386

== 64位:   zlib的-devel.x86_64   的libjpeg-devel.x86_64   freetype的-devel.x86_64

如前所述,您需要在setup.py文件中编辑以下变量:

FREETYPE_ROOT JPEG_ROOT ZLIB_ROOT

根据您的平台将值设置为/ usr / lib或/ usr / lib64。完成后,您很可能想要运行

python setup.py build --force
python setup.py install

这将强制重建PIL的所有lib并重新生成它们。

答案 1 :(得分:3)

您还需要libjpeg标头,而不仅仅是库本身。这些包通常被称为以header或dev结尾的东西,具体取决于你拥有的分发。

答案 2 :(得分:3)

我有同样的问题。就我而言,我需要设置:

JPEG_ROOT="/usr/lib64/"

而不是:

JPEG_ROOT="/usr/lib/"
祝你好运。

答案 3 :(得分:1)

您也可以尝试使用Pillow代替PIL。

枕头是“促进PIL积极发展”的PIL分支。在1.7.0和1.7.1版本中,他们进行了一些更改以支持多拱(参见changelog)。

答案 4 :(得分:0)

今天我遇到了同样的问题,我找到了解决方案。基本上它涉及移除P​​IL,通过Fink安装lipjpeg并重新安装PIL。

我写了article一步一步讲述如何做到这一点。如果有趣的话,请查看。