This gets PIL working with JPEG/ZLIB support within a virtualenv (with –no-site-packages). This has specifically been tested with Python 2.7 on Ubuntu 11.04 & 11.10.

 

1. Install the dependencies needed for the PIL library, using aptitude. This installs everything but PIL itself.

sudo apt-get build-dep python-imaging

 

2. Install the python-dev package so that we can compile PIL.

sudo apt-get install python-dev

 

3. Make sure that PIL's setup.py can find JPEG/ZLIB, by creating find-able links to the libraries. Ubuntu installs these libs in a non-standard place, so the package installer needs a little help finding them.

sudo ln -s /usr/lib/x86_64-linux-gnu/libfreetype.so /usr/lib/

sudo ln -s /usr/lib/x86_64-linux-gnu/libz.so /usr/lib/

sudo ln -s /usr/lib/x86_64-linux-gnu/libjpeg.so /usr/lib/

 

*note* These links are for a 64-bit Ubuntu. For 32-bit installations, I believe it should be replaced by i386-linux-gnu

 

4. From the root of your virtualenv (with it activated) run:

pip install PIL

 

That's it! If you run into any problems on Ubuntu 11.04+, leave a comment and I'll try to update the post accordingly.