Installing Python Imaging Library (PIL) under virtualenv or buildout

I have greatly struggled to have PIL library support in isolated Python environments like virtualenv –no-site-packages.

For example, when installing Satchmo shop under virtualenv:

../bin/clonesatchmo.pyhe Python Imaging Library is not installed. Install from your distribution binaries.
../bin/clonesatchmo.py The Python Imaging Library is not installed. Install from your distribution binaries.

Though it clearly is there, installed by easy_install PIL command:

ls ../lib/python2.5/site-packages/PIL-1.1.7-py2.5-linux-x86_64.egg
ArgImagePlugin.py	 ExifTags.py		  GimpGradientFile.pyc...

Does anyone know if this problem is with PIL itself, eggified PIL or something else?

In any case, there is an easy workaround: use system-wide PIL (sudo apt-get install python-imaging) and symlink PIL from your site-wide installation under the isolated Python environment:

(satchmo-py25)mulli% pwd
/srv/plone/mmaspecial/satchmo-py25/lib/python2.5/site-packages
(satchmo-py25)mulli% ln -s /usr/lib/python2.4/PIL .
That works for now, but I’d like to learn how to make virtualenv and buildout install PIL egg bullet-proof way.

12 thoughts on “Installing Python Imaging Library (PIL) under virtualenv or buildout

  1. I have had same time of problem recently which I solved under Mac OSX by easy installing PILwoTk. This makes me believe the standard egg has an issue…

  2. It seems that setuptools doesn’t find PIL egg. The solution I found is simplier :

    $ cd /srv/plone/mmaspecial/satchmo-py25/lib/python2.5/site-packages
    $ ln -s PIL-1.1.7-py2.5-linux-x86_64.egg PIL

    This is enough to get it works with your egg and works with all eggs. Why it doesn’t work with this egg… may be ‘x86_64’ that add an underscore where setuptools doesn’t expect to find one.

  3. @Encolpe

    Your solution worked perfectly for me even though I’m using OS X 10.6. I just had to change the name of the egg. Thanks!

  4. how would you know if you installed the PIL without problems. i just installed PIL using Imaging-1.1.7; python setup.py install.

  5. You can now do:
    $ source env1/bin/activate
    (env1)….~$ easy_install pil

Leave a Reply

Your email address will not be published. Required fields are marked *