10
votes

I know that this question looks like a duplicate but I've followed many online instructions on how to properly install PIL and none have worked.

I've tried everything in: Python Image Library fails with message "decoder JPEG not available" - PIL with no success.

When I run sudo pip install pil, worst of all, there is a misleading error. Jpeg, Freetyle, etc support is all listed as available. But when running some python code using PIL, the notorious IOError of "decoder jpeg not available' comes up.

Even after symlinking into /usr/lib for the .so libjpeg files, nothing has worked.

Any ideas? Thank you.

1

1 Answers

20
votes

You can try this:

1. clear PIL packages

rm -rf /usr/lib/python2.7/site-packages/PIL
rm -rf /usr/lib/python2.7/site-packages/PIL.pth

2. install required packages

ubuntu:
apt-get install libjpeg-dev libfreetype6-dev zlib1g-dev libpng12-dev

centos:
yum install zlib zlib-devel
yum install libjpeg libjpeg-devel
yum install freetype freetype-devel

3.download Image and install

wget http://effbot.org/downloads/Imaging-1.1.7.tar.gz
tar xzvf Imaging-1.1.7.tar.gz
cd Imaging-1.1.7
# if the sys is x64, you must also do this: edit the setup.py file and set:
# centOS:
TCL_ROOT = '/usr/lib64'
JPEG_ROOT = '/usr/lib64'
ZLIB_ROOT = '/usr/lib64'
TIFF_ROOT = '/usr/lib64'
FREETYPE_ROOT = '/usr/lib64'
LCMS_ROOT = '/usr/lib64'
# Ubuntu:
TCL_ROOT = '/usr/lib/x86_64-linux-gnu'
JPEG_ROOT = '/usr/lib/x86_64-linux-gnu'
ZLIB_ROOT = '/usr/lib/x86_64-linux-gnu'
TIFF_ROOT = '/usr/lib/x86_64-linux-gnu'
FREETYPE_ROOT = '/usr/lib/x86_64-linux-gnu'
LCMS_ROOT = '/usr/lib/x86_64-linux-gnu'
#then install it use:
python2.7 setup.py install

4. check if it works

# before this command you should run `mv PIL PIL2`

python2.7 selftest.py

If the result is:

--- PIL CORE support ok
--- TKINTER support ok
--- JPEG support ok
--- ZLIB (PNG/ZIP) support ok
--- FREETYPE2 support ok
*** LITTLECMS support not installed
--------------------------------------------------------------------
Running selftest:
--- 57 tests passed.

Congratulation!!