Wie installiere ich Python Imaging Library (PIL)?


35

Wie installiere ich die Python Imaging Library (PIL) auf Ubuntu?

Ich habe es versucht

sudo apt-get install python-imaging

Aber jetzt, wenn ich python selftest.py ausführe (ein Skript, das ich irgendwo auf der http://pythonware.com/products/pil/-Website erhalten habe ), erhalte ich (unter anderem Warnmeldungen):

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

Habe ich den PIL irgendwie durcheinander gebracht - wie behebe ich das?

Ist das PIL vielleicht in Ordnung, aber das "selftest.py" ist nicht das richtige Programm, um zu überprüfen, ob PIL richtig installiert ist - wie kann ich sonst feststellen, ob PIL richtig installiert ist oder nicht?

(Ich benutze Ubuntu 12.04 LTS "Precise Pangolin").

(Letztendlich versuche ich, einem Python-Code einen 2D-Barcode-Generator hinzuzufügen, und alle in Python geschriebenen 2D-Barcode-Generatoren schienen den PIL zu verwenden.)


2
Möglicherweise möchten Sie versuchen, die PIL- Datei
Aaron Hill

1
In 18.04 sieht es so aus, als ob du es einfach tust sudo apt-get install python-piloder sudo apt-get install python3-pil.
Shule

^ Auf jeden Fall habe sudo apt-get install python-pilich gerade an Raspbian gearbeitet.
Alecxe

Antworten:


25

Etwas Ähnliches ist mit mir passiert, ich habe es so gelöst

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

Und versuche dort die Installation über pip install PIL.

Mehr pipdazu finden Sie hier . Kurz gesagt, es ist eine bequeme (und mittlerweile übliche) Möglichkeit, Python-Bibliotheken zu installieren.

Wenn es weiterhin fehlschlägt, kann dies daran liegen, dass PIL diese Bibliotheken in einem anderen Pfad durchsucht.

Es stellt sich heraus, dass die APT-Installationen die Bibliotheken unter / usr / lib / x86_64-linux-gnu ablegen und PIL in / usr / lib / nach ihnen suchen wird . Sie müssen also Symlinks für PIL erstellen, um sie zu sehen.

Versuchen Sie herauszufinden, ob libjpeg- und libz-Bibliotheken in / usr / lib / x86_64-linux-gnu vorhanden sind, und erstellen Sie auf diese Weise einen Symlink

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/

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


Dies hat bei mir unter Ubuntu 12.04 64bit nicht funktioniert.
Gus E

1
Wenn es Ihren Bedürfnissen entspricht, können Sie versuchen, "Kissen". Es ist ein Rückgang im Ersatz für PIL.
Hernantz

7
Wann immer möglich, verwenden Sie pillow. Es ist im Wesentlichen PIL, wird aber tatsächlich beibehalten.
Thane Brimhall

Das Paket zlib1g-dev ist nicht verfügbar, wird aber von einem anderen Paket referenziert. Dies kann bedeuten, dass das Paket fehlt, veraltet ist oder nur von einer anderen Quelle verfügbar ist. E: Das Paket libjpeg kann nicht gefunden werden. E: Das Paket libjpeg-dev kann nicht gefunden werden. E: Das Paket 'zlib1g -dev 'hat keinen Installationskandidaten
Aalok

Das Python-Imaging-Paket in Ubuntu 12.04 LTS ist mit der JPEG-Bibliothek verknüpft, und das Changelog erwähnt Multiarch Breaking vor Juli 2011. Vielleicht war dies selftest.pyauch deswegen gescheitert , aber das hatte nicht unbedingt Auswirkungen auf etwas anderes.
Josip Rodin

30

Die obige Lösung funktionierte unter Ubuntu 12.10 nicht, da libjpeg nicht im Repository verfügbar war.

Was für mich gelaufen ist, war:

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

Wenn Sie die Fehlermeldung "Sie müssen einige 'Quell'-URIs in Ihre sources.list einfügen" erhalten, stellen Sie sicher, dass Ihre /etc/apt/sources.list deb-src-Einträge enthält, die Ihren deb-Einträgen entsprechen.

Anschließend müssen Sie die Dateien von ihrem tatsächlichen Speicherort auf Ihrem Server mit dem Speicherort verknüpfen, an dem PIL sie erwartet.

32-Bit-Version

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

64-Bit-Version

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

Endlich, pip install PIL

Erfolg!

Bildbeschreibung hier eingeben


Update September 2014

Pillow ist eine modernere Gabel von PIL.

#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

1
Funktioniert bei mir am 13.04 mit Pillow, ohne Symlinking.
Eugene Nagorny

2
Auch für mich gearbeitet (14.04 LTS 64-bit, unmodifizierten von oben): sudo apt-get build-dep python-imaging sudo apt-get install libjpeg62 libjpeg62-dev
Peter Teoh

Ich brauchte nur "apt-get Build-Dep Python-Imaging"
Peterretief

13

Ich möchte nur hinzufügen, dass das pip install pilnicht mehr funktioniert, zumindest auf meinem Rechner muss man das tun

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


5
Versuchen Sie es pip install Pillowstatt pip install pill(letzteres gibt es nicht)
aclark

@ Lynob das ist das gleiche wie PIL? und wird von TkInker unterstützt?
3.

@ 3kstc ja, es ist
Lynob

4

Mit den obigen Antworten werden Links für x64-Bibliotheken an x86-Standorten erstellt. Stattdessen würde ich die PIL-Quelle herunterladen und diese Zeilen in setup.py hinzufügen:

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

nach diesen Zeilen (~ Zeile 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")

PIL neu installieren. Wenn Sie pip verwenden:

pip uninstall PIL

Dann aus dem Quellverzeichnis ausführen:

python setup.py install

2

Diese Lösung funktioniert für mich unter Ubuntu 14.04, da libjpeg nicht im Repository verfügbar war.

Was hat sich für mich bewährt?

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

2

sudo apt-get install python-imagingInstalliert jetzt Pillow not PIL . Was selftest.py, müssen Sie die Quelle überprüfen , um sie auszuführen. Und natürlich müssen Sie die Abhängigkeiten installieren, wenn PIL sie unterstützen soll, z

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

So führen Sie eine PIL-Version aus, die neuer als die in Ubuntu enthaltene ist:

pip install Pillow

2

Ich musste Pillow am 14.04 in einer virtuellen Umgebung installieren (ohne Systempakete zu verwenden).

So erstellen Sie ein Kissen aus PyPI in einem virtuellen Env (Python 2.7):

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

... dann können Sie PIL importieren .

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.