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


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

sudo apt-get install python-dev


  1. Make sure that PIL’s 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/ /usr/lib/

sudo ln -s /usr/lib/x86_64-linux-gnu/ /usr/lib/

sudo ln -s /usr/lib/x86_64-linux-gnu/ /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


  1. 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.