Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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!

like image 643
TIMEX Avatar asked Sep 28 '09 09:09

TIMEX


2 Answers

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.

like image 115
NerdyNick Avatar answered Oct 12 '22 18:10

NerdyNick


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.

like image 37
Lennart Regebro Avatar answered Oct 12 '22 19:10

Lennart Regebro