Django: installer PIL dans un environnement virtuel

Pour pouvoir uploader des fichiers images ou pour manipuler des images dans une application Django, il est nécessaire d’installer le package PIL (pour Python Imaging Library). L’installer c’est bien, mais permettre de manipuler les images de types JPEG, GIF ou PNG c’est mieux.

Je me suis heurter plusieurs fois à des problèmes de type d’image non supportés par la version de PIL que je venais fraichement d’install avec pip. Pour contourner le problème, je suis passé par une installation plus « manuelle ».

Pour commencer, il faut installer les librairies de développement pour avoir le support JPEG, GIF ou PNG:

sudo apt-get install libjpeg8 libjpeg8-dev
sudo apt-get install zlib1g-dev
sudo apt-get install libfreetype6 libfreetype6-dev

NB: Il semble possible d’utiliser soit libjpeg8 soit libjpeg62. libjpeg8 est recommandé ça et là pour Debian/Ubuntu au lieu de libjpeg62.

Il faut ensuite activer son environnement virtuel:

cd myEnv/
source bin/activate

On télécharge ensuite les sources du package Imaging, on extrait les sources et on:

wget http://effbot.org/downloads/Imaging-1.1.7.tar.gz
tar xzf Imaging-1.1.7.tar.gz
cd Imaging-1.1.7.tar.gz
python setup.py build_ext -i
python selftest.py
python setup.py install

Et le tour est joué

EDIT: J’ai finalement trouvé une solution pour régler le souci et pouvoir installer PIL à l’aide de pip.

Il semblerait que Ubuntu oublie de créer les liens symboliques à l’installation des paquets libjpeg*, zlib1g* et libfreetype6*.

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/

Il ne reste plus qu’à installer PIL comme ceci:

pip install PIL

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *