Comment installer une bibliothèque d'imagerie python (PIL)?

35

Comment installer la bibliothèque d'imagerie python (PIL) sur Ubuntu?

J'ai essayé de faire

sudo apt-get install python-imaging

mais maintenant, quand je lance python selftest.py (un script que j'ai obtenu quelque part sur le site http://pythonware.com/products/pil/ ), je reçois (entre autres messages d'avertissement):

...
*** JPEG support not installed
*** ZLIB (PNG/ZIP) support not installed
...
*** 1 tests of 57 failed.

Ai-je en quelque sorte foiré le PIL - comment résoudre ce problème?

Est-ce que la PIL convient peut-être, mais "selftest.py" n'est pas vraiment le bon programme pour vérifier si PIL est installé correctement - comment puis-je savoir si PIL est installé correctement ou non?

(J'utilise Ubuntu 12.04 LTS "Precise Pangolin").

(Ce que j'essaie en définitive de faire, c’est d’ajouter un générateur de code à barres 2D à un code python, et tous les générateurs de code à barres 2D que j’ai trouvés qui étaient écrits en python semblaient tous utiliser le PIL).

David Cary
la source
2
Vous voudrez peut-être essayer d'utiliser le PIL dans une application, il pourrait simplement y avoir un problème avec selftest.py
Aaron Hill
1
En 18.04, il semble que vous fassiez sudo apt-get install python-pilou sudo apt-get install python3-pil.
Shule
^ Décidément, sudo apt-get install python-pilje viens de travailler pour moi sur Raspbian.
Alecxe

Réponses:

25

Quelque chose de semblable m'est arrivé, j'ai résolu de cette façon

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

Et essayez d’y installer via pip install PIL.

Plus sur ce qui pippeut être trouvé ici . En bref, c’est un moyen pratique (et en train de devenir un standard) d’installer des bibliothèques Python.

si cela continue à échouer, cela peut être dû au fait que PIL recherche ces bibliothèques dans un chemin différent.

Il s'avère que les installations APT ont placé les bibliothèques sous / usr / lib / x86_64-linux-gnu et que PIL les recherchera dans / usr / lib / . Donc, vous devez créer des liens symboliques pour PIL pour les voir.

Essayez de voir si libjpeg et libz libs existent dans / usr / lib / x86_64-linux-gnu et créez un lien symbolique de cette façon.

sudo ln -s /lib/x86_64-linux-gnu/libz.so.1 /lib/
sudo ln -s /usr/lib/x86_64-linux-gnu/libfreetype.so.6 /usr/lib/
sudo ln -s /usr/lib/x86_64-linux-gnu/libjpeg.so.62 /usr/lib/

Source: http://jj.isgeek.net/2011/09/install-pil-with-jpeg-support-on-ubuntu-oneiric-64bits/

Hernantz
la source
Cela n'a pas fonctionné pour moi sur Ubuntu 12.04 64bit.
Gus E
1
Si cela répond à vos besoins, vous pouvez essayer "oreiller". C'est une solution de remplacement à la LIP.
Hernantz
7
Dans la mesure du possible, utilisez pillow. C'est essentiellement PIL mais en fait maintenu.
Thane Brimhall
Le paquet zlib1g-dev n'est pas disponible, mais est désigné par un autre paquet. Cela peut signifier que le package est manquant, obsolète ou disponible uniquement à partir d'une autre source E: Impossible de localiser le package libjpeg E: Impossible de localiser le package libjpeg-dev E: Impossible de localiser le package libfreetype6-dev E: Package 'zlib1g -dev 'n'a pas de candidat d'installation.
Aalok
Le paquetage python-imagerie dans Ubuntu 12.04 LTS est lié à la bibliothèque JPEG et le journal des modifications mentionne que multiarch l’a cassé avant juillet 2011. Peut-être que cela selftest.pyavait été cassé à cause de cela aussi, mais cela n’affectait pas nécessairement autre chose.
Josip Rodin
30

La solution ci-dessus ne fonctionnait pas pour moi sur Ubuntu 12.10 car libjpeg n'était pas disponible dans le référentiel.

Ce qui a fini par travailler pour moi a été:

sudo apt-get build-dep python-imaging
sudo apt-get install libjpeg62 libjpeg62-dev

Si vous obtenez le message d'erreur "Vous devez insérer des URI" sources "dans votre fichier sources.list, assurez-vous que votre fichier /etc/apt/sources.list comporte des entrées deb-src correspondant à vos entrées deb.

Ensuite, vous devez créer un lien symbolique entre les fichiers de leur emplacement réel sur votre serveur et ceux auxquels PIL les attend.

Version 32 bits

sudo ln -s /usr/lib/i386-linux-gnu/libz.so /usr/lib/libz.so
sudo ln -s /usr/lib/i386-linux-gnu/libjpeg.so /usr/lib/libjpeg.so
sudo ln -s /usr/lib/i386-linux-gnu/libfreetype.so /usr/lib/libfreetype.so

Version 64 bits

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

Finalement, pip install PIL

Succès!

entrez la description de l'image ici


Mise à jour septembre 2014

Oreiller est une fourche plus moderne de la pilule.

#jpeg support
sudo apt-get install libjpeg-dev
#tiff support
sudo apt-get install libtiff-dev
#freetype support
sudo apt-get install libfreetype6-dev
#openjpeg200support (needed to compile from source)
wget http://downloads.sourceforge.net/project/openjpeg.mirror/2.0.1/openjpeg-2.0.1.tar.gz
tar xzvf openjpeg-2.0.1.tar.gz
cd openjpeg-2.0.1/
sudo apt-get install cmake
cmake .
sudo make install
#install pillow
pip install pillow
Nick Woodhams
la source
1
Fonctionne pour moi le 13.04 avec Pillow, sans lien symbolique.
Eugene Nagorny
2
a également travaillé pour moi (14.04 LTS 64 bits, non modifié de dessus): sudo apt-get build-dep python-imaging sudo apt-get install libjpeg62 libjpeg62-dev
Peter Teoh
J'avais juste besoin de "apt-get build-dep python-imaging"
peterretief
13

Je veux juste ajouter que cela pip install pilne fonctionne plus, du moins sur ma machine, vous devez le faire

pip install PIL --allow-external PIL --allow-unverified PIL

Lynob
la source
5
Essayez pip install Pillowau lieu de pip install pill(ce dernier n'existe pas)
aclark
@ Lynob c'est la même chose que PIL? et est suppoerted par TkInker?
3kstc
@ 3kstc oui, il est
Lynob
4

Les réponses ci-dessus créent des liens pour les bibliothèques x64 dans des emplacements x86. Au lieu de cela, je téléchargerais la source PIL, puis ajouterais ces lignes dans setup.py:

    add_directory(library_dirs, "/usr/lib/x86_64-linux-gnu")
    add_directory(library_dirs, "/lib/x86_64-linux-gnu")

après ces lignes (~ ligne 211)

    # standard locations
    add_directory(library_dirs, "/usr/local/lib")
    add_directory(include_dirs, "/usr/local/include")

    add_directory(library_dirs, "/usr/lib")
    add_directory(include_dirs, "/usr/include")

réinstaller PIL. Si vous utilisez pip:

pip uninstall PIL

Ensuite, à partir du répertoire source, exécutez:

python setup.py install
Salami
la source
2

Cette solution fonctionne pour moi sur Ubuntu 14.04 car libjpeg n’était pas disponible dans le référentiel.

Qu'est-ce qui a fini par travailler pour moi?

sudo apt-get build-dep python-imaging
sudo apt-get install libjpeg62 libjpeg62-dev
Sagar Soni
la source
2

sudo apt-get install python-imaginginstalle maintenant Pillow not PIL . En ce qui concerne selftest.py, vous devrez peut-être vérifier la source pour l'exécuter. Et bien sûr, vous devez installer les dépendances si vous voulez que PIL les prenne en charge, par exemple

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

Pour exécuter une version de PIL plus récente que celle incluse dans Ubuntu:

pip install Pillow
aclark
la source
2

J'avais besoin d'installer Pillow dans un virtualenv le 14.04 (sans utiliser les packages système).

Pour construire un oreiller à partir de PyPI dans un environnement virtuel (Python 2.7):

$ sudo apt-get build-dep pillow
$ virtualenv venv
$ source venv/bin/activate
(venv)$ pip install pillow

... alors vous pouvez importer PIL .

Corey Goldberg
la source