Informationen zum PIL-Fehler - IOError: Decoder-Zip nicht verfügbar

68

Ich bekomme die:

IOError: decoder zip not available

wenn ich versuche, ein Bild zu zeichnen und in einem JPEG in PIL zu speichern. Irgendwelche Gedanken darüber, wie man das löst? PIL hat in der Vergangenheit für mich gut funktioniert, wenn es um das Anzeigen / Hochladen von Bildern geht.

DevX
quelle

Antworten:

13

Es wird wahrscheinlich nur der Zip-Decoder benötigt, um das JPEG zu speichern. Ich glaube, ich musste diese Schritte in OS X ausführen, um eine Vorschau der JPEGs anzuzeigen.

Es bedeutet wahrscheinlich, dass Sie:

Jon-Eric
quelle
1
Sie können die zlib herunterladen und dann pil mit pip neu installieren. Sie sollten es nicht aus dem Quellcode erstellen müssen.
Blutegel
Mac OS X PIL JEPG- und PNG-Probleme . Dieser Beitrag hilft mir, PNG- und JPEG- Probleme mit PIL zu lösen . ( Decoder Zip nicht verfügbar und Decoder JPEG nicht verfügbar )
isaacselement
115
sudo pip uninstall PIL
sudo pip install pillow 

^^ habe es für mich behoben.

Pillow ist eine Gabel aus PIL, die mit Pip / Setuptools kompatibel ist und eine etwas bessere Wartung erhält. Ich habe noch keine API-Unterschiede gesehen.

Bearbeiten: Es gibt einen bemerkenswerten API-Unterschied. PIL macht Image als Namespace der obersten Ebene verfügbar, sodass Sie dies tun können

import Image # in PIL only

aber

from PIL import Image  # in pillow or PIL
  • Danke, Leopd!
Cory
quelle
4
Mein Problem wurde behoben! Dies ist viel einfacher als das manuelle Kompilieren von PIL. Vielen Dank!
Surjikal
7
Kleiner API-Unterschied - import Imagefunktioniert in PIL, nicht in Kissen. Kissen benötigtfrom PIL import Image
Leopd
4
Bevor Sie die Kisseninstallation ausführen, würde ich empfehlen, die Header zlib und jpeg dev mit "sudo apt-get install libjpeg-dev zlib1g-dev" zu installieren. Dadurch wird sichergestellt, dass der Export von .png und .jpg ordnungsgemäß funktioniert und in.
meawoppl
3
Hat auf OS X Mavericks nicht geholfen :(
Petr Peller
1
Wenn Sie Pillow nach der Installation von zlib neu installieren, müssen Sie Pillow neu kompilieren:pip --no-cache-dir install Pillow
Sky
41

Die detailliertere Installation PIL mit zlib Bibliothek in Ubuntu 64 Bit:

http://obroll.com/install-python-pil-python-image-library-on-ubuntu-11-10-oneiric/

Für die Faulen (Credits an @ meawoppl für die apt-get):

$ sudo apt-get install libjpeg-dev zlib1g-dev
Jodi
quelle
2
Für die Faulen: sudo apt-get install libjpeg-dev zlib1g-dev
meawoppl
1
Wenn Sie sich gerade für Kiesel entwickeln und hierher kommen, weil der Zip-Decoder nicht verfügbar ist. Installieren Sie diese Bibliotheken und installieren Sie das Kissen neu. Wenn Sie Pillow erneut installieren, wird die Bibliothek mit diesen Abhängigkeiten neu erstellt.
HyLian
Wenn dies bei Ihnen nicht funktioniert, schauen Sie sich die Antwort von JohnPang an, die für mich funktioniert hat.
Mark O'Sullivan
17

Ich habe dieses Problem auf einer 64-Bit-Ubuntu 13.04-Desktop-Version festgestellt festgestellt und hier ist, wie ich es behoben habe.

Versuchen Sie, PIL neu zu installieren, und achten Sie nach der Neuinstallation auf die Ausgabeinformationen:

---------------------------------------------------------------------
PIL 1.1.7 SETUP SUMMARY
--------------------------------------------------------------------
version       1.1.7
platform      linux2 2.7.4 (default, Sep 26 2013, 03:20:26)
              [GCC 4.7.3]
--------------------------------------------------------------------
*** TKINTER support not available
--- JPEG support available
*** ZLIB (PNG/ZIP) support not available
--- FREETYPE2 support available
*** LITTLECMS support not available
--------------------------------------------------------------------

Beachten Sie, dass es eine Zeile gibt:*** ZLIB (PNG/ZIP) support not availableBeachten Sie, , was bedeutet, dass PIL ohne ZLIB-Unterstützung erstellt wurde, und ich habe dies dadurch behoben:

Zuerst sollten folgende Pakete installiert sein: libjpeg-dev libfreetype6-dev zlib1g-dev

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

# create these links, if already exists, remove it and re-link it
ln -s /usr/lib/x86_64-linux-gnu/libjpeg.so /usr/lib
ln -s /usr/lib/x86_64-linux-gnu/libfreetype.so /usr/lib
ln -s /usr/lib/x86_64-linux-gnu/libz.so /usr/lib

# reinstall PIL
pip uninstall PIL
pip install PIL

Dieses Mal sollte eine Zeile --- ZLIB (PNG/ZIP) support availablein der Ausgabe sein.

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

Johnny Zhao
quelle
Wenn Sie danach einen _imagingft.c:73:31: fatal error: freetype/fterrors.h: No such file or directoryFehler sehen, verlinken Sie einfach eine weitere Bibliothek: ln -s /usr/include/freetype2 /usr/include/freetype2/freetype (Ich glaube, das passiert, wenn Sie haben apt-get install python-imaging)
Nick Sweeting
8

Ich bin auf dasselbe Problem gestoßen. Es scheint mir, dass Kissen und Kissen (unterschiedlicher Fall in 'p') zwei verschiedene Pakete sind. Wenn Sie also Pillow verwenden, pip install pillowhilft dies möglicherweise nicht. Hier ist meine Lösung:

$ pip uninstall pillow
$ pip uninstall Pillow
$ sudo apt-get install libjpeg-dev zlib1g-dev
$ pip install -I Pillow

Die ersten beiden Zeilen dienen zum Entfernen von Kissen oder Kissenverpackungen.

Die dritte Zeile besteht darin, die beiden erforderlichen Pakete zu installieren.

Viertens wird Pillow neu installiert.

Hinweis: Wenn Sie virtualenv verwenden, pip install/uninstallmuss es unter virtualenv ausgeführt werden

John Pang
quelle
2

Ich habe dies unter OS X Mavericks folgendermaßen behoben:

Gebräu installieren:

http://brew.sh/

Installieren Sie pip:

http://www.pip-installer.org/en/latest/installing.html

Mit diesen können Sie Folgendes tun:

sudo brew install lzlib     # installs zlib
pip uninstall PIL
pip install --no-index -f http://dist.plone.org/thirdparty/ -U PIL

Danach funktionierte es gut. Eine Erklärung der dritten Zeile finden Sie in dieser Antwort:

https://stackoverflow.com/a/2486396/290072

Almo
quelle
1

auf Mac

sudo brew install lzlib     # installs zlib
pip uninstall PIL
pip install PIL
monika mevenkamp
quelle
Bitte erläutern Sie noch etwas. Es ist wirklich schwer zu sagen, was Sie sagen.
Robbie Wxyz
und sudo brew install lzlibsagt nur "brauen: Befehl nicht gefunden" auf meinem.
Almo
1

Ich verwende die 64-Bit-Ubuntu 14.04LTS-Desktop-Version und habe die Antwort von Johnny Zhao ausprobiert.
Wann

exec sudo easy_install PIL

Ich habe eine Fehlermeldung erhalten:

can't find freetype/fterrors.h

und ich finde freetype2 in / usr / include /

Sie könnten es lösen durch:

sudo ln -s /usr/include/freetype2 /usr/include/freetype

dann wird die Installation erfolgreich sein

Holzrat
quelle
Dies liegt daran, dass Sie Python-Imaging mit installiert haben apt-get install python-imaging. Wenn Sie nur libjpeg-dev libfreetype6-dev zlib1g-devalleine ohne Python-Imaging installieren , wird dieser Fehler nicht angezeigt.
Nick Sweeting
1

Die Ursache kann sein, dass Sie Pillow ohne zlib-Unterstützung installiert haben.

Unter CentOS 7:

yum install zlib zlib-devel
pip install Pillow --upgrade

Und wenn Sie für eine Webanwendung verwenden, starten Sie Ihren Webserver neu, um ihn anzuwenden.

chirale
quelle
Dies ist wahrscheinlich offensichtlich, aber wenn Sie eine virtuelle Umgebung verwenden, sollte das "pip install Pillow --upgrade" innerhalb der virtuellen Umgebung durchgeführt werden.
Shawn
0

Mac OS X PIL JEPG- und PNG-Probleme (wie bei Linux OS ), dieser Beitrag hilft mir bei PNG- und JPEG-Problemen mit PIL: Decoder-Zip nicht verfügbar und Decoder- JPEG nicht verfügbar

Stellen Sie sicher, dass JPEG und ZLIB verfügbar sind, wenn Sie PIL installieren / neu installieren:

$ cd Imaging-1.1.7
$ python setup.py build_ext -i
$ python selftest.py

--------------------------------------------------------------------
--- TKINTER support available
--- JPEG support available
--- ZLIB (PNG/ZIP) support available
*** FREETYPE2 support not available
*** LITTLECMS support not available
--------------------------------------------------------------------
isaacselement
quelle
0

Ich habe die Version 2.8.0 ausprobiert, es funktioniert gut für mich

pip install -Iv Pillow==2.8.0
Suresh Velusamy
quelle
0

Am musste Ubuntu 18ich installieren pillow 2.8.1:

pip install Pillow==2.8.1
Kenly
quelle
0

Versuch: $ sudo apt-get install python-dev $ sudo apt-get install libjpeg8-dev $ sudo ln -s /usr/lib/x86_64-linux-gnu/libjpeg.so /usr/lib Ab Version 3.0.0 benötigt Pillow libjpeg. Wenn das Problem weiterhin besteht, liegt möglicherweise eine Paketinkompatibilität vor. Sparen Sie Zeit und probieren Sie die vorherige Version aus: $ pip install Pillow==2.8.1

Vargha Hokmran
quelle