web-dev-qa-db-fra.com

Python La bibliothèque d'images échoue avec le message "Décodeur JPEG non disponible" - PIL

PIL prend en charge le format JPEG dans mon système.

Chaque fois que je fais un téléchargement, mon code échoue avec:

File "PIL/Image.py", line 375, in _getdecoder
    raise IOError("decoder %s not available" % decoder_name)
IOError: decoder jpeg not available

Comment puis-je résoudre ça?

303
Ravi

libjpeg-dev est nécessaire pour pouvoir traiter les fichiers JPEG avec un oreiller (ou PIL), vous devez donc l'installer, puis recompiler un oreiller. Il semble également que libjpeg8-dev soit nécessaire sous Ubuntu 14.04.

Si vous utilisez toujours PIL, vous devriez vraiment utiliser un oreiller ces jours-ci, donc, d'abord pip uninstall PIL avant de suivre ces instructions pour passer, ou si vous avez une bonne raison de rester avec PIL, remplacez "oreiller" par " PIL "ci-dessous).

Sur Ubuntu:

# install libjpeg-dev with apt
Sudo apt-get install libjpeg-dev
# if you're on Ubuntu 14.04, also install this
Sudo apt-get install libjpeg8-dev

# reinstall pillow
pip install --no-cache-dir -I pillow

Si cela ne fonctionne pas, essayez l'une des options ci-dessous, selon que vous êtes sous Ubuntu 64 bits ou 32 bits.

Pour Ubuntu x64:

Sudo ln -s /usr/lib/x86_64-linux-gnu/libjpeg.so /usr/lib
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

Ou pour Ubuntu 32bit:

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

Puis réinstallez l'oreiller:

pip install --no-cache-dir -I pillow

(Modifications pour inclure les commentaires des commentaires. Merci à Charles Offenbacher d’avoir signalé cette différence pour 32 bits et à t-mart d’avoir suggéré l’utilisation de --no-cache-dir).

484
Rolo

Pour ceux qui utilisent OSX, j’ai utilisé le binaire suivant pour obtenir libpng et libjpeg installés à l’échelle du système:

libpng & libjpeg pour OSX

Parce que j'avais déjà PIL installé (via pip sur un virtualenv), j'ai couru:

pip uninstall PIL
pip install PIL --upgrade

Cela a résolu l'erreur decoder JPEG not available pour moi.

UPDATE (24/04/14) :

Les versions plus récentes de pip nécessitent des indicateurs supplémentaires pour télécharger des bibliothèques (y compris PIL) à partir de sources externes. Essayez ce qui suit:

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

Voir la réponse suivante pour des informations supplémentaires: pip install PIL ne pas installer dans virtualenv

UPDATE 2 :

Si vous utilisez OSX Mavericks, vous devrez définir le drapeau ARCHFLAGS comme commentaires @ RicardoGonzales ci-dessous :

ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future pip install PIL --allow-external PIL --allow-unverified PIL
63
zeantsoi

C'est la seule façon qui a fonctionné pour moi. L'installation de packages et la réinstallation de PIL n'ont pas fonctionné.

Sur Ubuntu, installez le paquet requis:

Sudo apt-get install libjpeg-dev

(vous pouvez également installer libfreetype6 libfreetype6-dev zlib1g-dev pour activer d'autres décodeurs).

Puis remplacez PIL par un oreiller:

pip uninstall PIL
pip install pillow
28
Dennis Golomazov

Ce qui suit fonctionne sur Ubuntu 12.04:

pip uninstall PIL
apt-get install libjpeg-dev
apt-get install libfreetype6-dev
apt-get install zlib1g-dev
apt-get install libpng12-dev
pip install PIL --upgrade

lorsque vous voyez "- support JPEG disponible", cela signifie que cela fonctionne.

Mais, si cela ne fonctionne toujours pas lorsque vous modifiez votre image jpeg, vérifiez le chemin python !! mon chemin python manquant /usr/local/lib/python2.7/dist-packages/PIL-1.1.7-py2.7-linux-x86_64.Egg/, je modifie donc le ~/.bashrc ajoute le code suivant à ce fichier:

Éditer: export PYTHONPATH=$PYTHONPATH:/usr/local/lib/python2.7/dist-packages/PIL-1.1.7-py2.7-linux-x86_64.Egg/

puis, finalement, ça marche !!

21
Jason Huang

Sur Fedora 17, j’ai dû installer libjpeg-devel puis réinstaller PIL:

Sudo yum install --assumeyes libjpeg-devel
Sudo pip-python install --upgrade PIL
16
Bengt

La réponse de Rolo est excellente, mais j'ai dû réinstaller Pillow en contournant le cache de pip (introduit avec pip 7), sinon il ne sera pas correctement recompilé !!! La commande est:

pip install -I --no-cache-dir -v Pillow

et vous pouvez voir si Pillow a été correctement configuré en lisant dans les journaux ceci:

PIL SETUP SUMMARY
    --------------------------------------------------------------------
    version      Pillow 2.8.2
    platform     linux 3.4.3 (default, May 25 2015, 15:44:26)
                 [GCC 4.8.2]
    --------------------------------------------------------------------
    *** TKINTER support not available
    --- JPEG support available
    *** OPENJPEG (JPEG2000) support not available
    --- ZLIB (PNG/Zip) support available
    --- LIBTIFF support available
    --- FREETYPE2 support available
    *** LITTLECMS2 support not available
    *** WEBP support not available
    *** WEBPMUX support not available
    --------------------------------------------------------------------

comme vous pouvez le voir, le support pour jpg, tiff, etc. est activé, car j'avais déjà installé les bibliothèques requises via apt (libjpeg-dev libpng12-dev libfreetype6-dev libtiff-dev)

14
daveoncode

Sur Mac OS X Mavericks (10.9.3), j’ai résolu ce problème en procédant comme suit:

Installez libjpeg par brew (système de gestion de paquets)

brasser installer libjpeg

réinstaller l'oreiller (j'utilise un oreiller à la place de PIL)

pip installer-je oreiller

12
moogoo
apt-get install libjpeg-dev
apt-get install libfreetype6-dev
apt-get install zlib1g-dev
apt-get install libpng12-dev

Installez-les et assurez-vous d'installer PIL avec pip car je l'ai compilé à partir des sources et pour une raison quelconque, cela n'a pas fonctionné

11
EMP

J'utilisais déjà Pillow et j'ai la même erreur. J'ai essayé d'installer libjpeg ou libjpeg-dev comme suggéré par d'autres, mais on m'a dit qu'une version (plus récente) était déjà installée.

En fin de compte, tout ce que cela a pris était de réinstaller Pillow:

Sudo pip uninstall Pillow
Sudo pip install Pillow
9
Dimitris

Je suis trop novice pour commenter le post de zeantsoi; (. Alors, voici ce que je devais faire pour résoudre le

IOError: jpeg décodeur non disponible

1) installez les outils Xcode (ouvrez votre terminal et exécutez: xcode-select --install) - extrait de cet article: Installation impossible PIL après Mac OS X 10.9

2) installez libpng et le paquet libjpeg (programme d'installation combo) à partir de ce lien: http://ethan.tira-thompson.com/Mac_OS_X_Ports .html

3) redémarrez (pas sûr que ce soit obligatoire)

4) Réinstallez PIL en exécutant pip install -I PIL (comme j'avais initialement installé PIL avant d'avoir le problème)

J'espère que cette aide et ne confondez pas plus ...

_oho

3
oho

Cette question a été postée il y a longtemps et la plupart des réponses sont également anciennes. Donc, quand j'ai passé des heures à essayer de comprendre cela, rien ne fonctionnait et j'ai essayé toutes les suggestions de ce billet.

Les erreurs JPEG standard persistaient quand je tentais de télécharger un fichier JPG dans le formulaire d'avatar Django:

raise IOError("decoder %s not available" % decoder_name)
OSError: decoder jpeg not available

Ensuite, j'ai vérifié le référentiel pour Ubuntu 12.04 et remarqué quelques paquets supplémentaires pour libjpeg. J'ai installé ceux-ci et mon problème a été résolu:

Sudo apt-get install libjpeg62 libjpeg62-dev

L'installation de ceux-ci libjpeg-dev, libjpeg-turbo8-dev et libjpeg8-dev supprimés.

J'espère que cela aidera quelqu'un en 2015 et au-delà!

À votre santé

2
nicorellius

Même problème ici, JPEG support available mais toujours IOError: decoder/encoder jpeg not available, sauf que j'utilise Pillow et non PIL.

J'ai essayé tout ce qui précède et plus encore, mais après plusieurs heures, je me suis rendu compte que l'utilisation de Sudo pip install ne fonctionnait pas comme prévu, en combinaison avec virtualenv. Que je suis bête.

L'utilisation de Sudo lance effectivement la commande dans un nouveau shell (à ma connaissance, ce n'est peut-être pas tout à fait correct) où virtualenv n'est pas activé, ce qui signifie que les packages seront installés dans l'environnement global à la place. (Cela a tout gâché, je pense avoir eu 2 installations différentes de Pillow.)

J'ai nettoyé les choses, changé d'utilisateur en racine et réinstallé dans le virtualenv et maintenant cela fonctionne.
J'espère que cela aidera quelqu'un!

1
kaka

Pour Fedora

Installer les pré-requis
Sudo dnf install make automake gcc gcc-c++ kernel-devel rpm-build libjpeg-devel zlib-devel python-devel
Maintenant, installez un oreiller

Sudo pip install pillow

Remarque - Pour libjpeg et zlib, nous installons les packages libjpeg-devel et zlib-devel dans Fedora/CentOS/Red Hat.

1
Ajinkya Bhosale

Tout d'abord, je devais supprimer les dossiers python du dossier utilisateur/appData (qui créait des problèmes énormes), en plus de désinstaller Python. Ensuite, j'ai installé WinPython Distribution: http://code.google.com/p/winpython/ qui inclut PIL

0
Jill

Pour ceux sur Mac OS Mountain Lion, j'ai suivi la réponse de zeantsoi, mais cela ne fonctionne pas.

Je me suis finalement retrouvé avec la solution de cet article: http://appelfreelance.com/2010/06/libjpeg-pil-snow-leopard-python2-6-_jpeg_resync_to_restart/

Maintenant, je suis heureux de lancer mon script pour jpeg!

0
Zhenyi Zhang