TIMEX
TIMEX

Reputation: 272074

Python PIL cannot locate my "libjpeg"

I cannot use PIL because it cannot find my libjpeg!

First, I installed PIL default. And when I ran the selftest.py, it gave me:

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

Then, I followed instructions online to change PIL's setup.py to

JPEG_ROOT = "/usr/lib"

Because when I locate libjpeg, this is what I get:

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

So, I ran setup.py install again...and did selftest.py. And I still get the same error!

Upvotes: 10

Views: 18236

Answers (5)

Mark van Lent
Mark van Lent

Reputation: 13001

You could also try to use Pillow instead of PIL.

Pillow is a PIL fork to "foster active development of PIL". In versions 1.7.0 and 1.7.1 they made some changes to support multi-arch (see the changelog).

Upvotes: 1

rhinoinrepose
rhinoinrepose

Reputation: 2151

I had the same issue. In my case, I need to set:

JPEG_ROOT="/usr/lib64/"

instead of:

JPEG_ROOT="/usr/lib/"

Good luck.

Upvotes: 3

Marcio Mangar
Marcio Mangar

Reputation: 156

Today I was facing the same problem, and I've found the solution. Basically it involves remove the PIL, install lipjpeg through Fink and re-install the PIL.

I wrote an article telling step by step how to do that. If interesting check this out.

Upvotes: 0

NerdyNick
NerdyNick

Reputation: 803

There at least 3 header sets that you will want to install. 1 more if you want to deal with Tiff's

freetype, libjpeg, zlib all of which will be in the following packages on CentOS:

== 32 Bit: zlib-devel.i386 libjpeg-devel.i386 freetype-devel.i386

== 64 Bit: zlib-devel.x86_64 libjpeg-devel.x86_64 freetype-devel.x86_64

As you did before you will want to edit the following variables in the setup.py file:

FREETYPE_ROOT JPEG_ROOT ZLIB_ROOT

Setting there values to /usr/lib or /usr/lib64 based on your platform. Once done you will most likely want to run

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

That will force rebuild all your lib for PIL and reinstall them raw.

Upvotes: 18

Lennart Regebro
Lennart Regebro

Reputation: 172309

You need the libjpeg headers as well, not only the library itself. Those packages are typically called something ending in headers or dev, depending on what distribution you have.

Upvotes: 3

Related Questions