Python PIL无法找到“libjpeg”

10 投票
5 回答
17960 浏览
提问于 2025-04-15 14:39

我无法使用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 个回答

3

我也遇到过同样的问题。在我的情况下,我需要设置:

JPEG_ROOT="/usr/lib64/"

而不是:

JPEG_ROOT="/usr/lib/"

祝你好运。

3

你还需要libjpeg的头文件,不仅仅是库本身。这些包通常会有“headers”或“dev”这样的结尾,具体名称取决于你使用的系统版本。

18

你需要安装至少三组头文件。如果你想处理Tiff格式的文件,还需要再安装一组。

在CentOS上,freetype、libjpeg和zlib这几个库会包含在以下软件包中:

== 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库,并重新安装它们。

撰写回答