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.