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

305

PIL prend en charge 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?

Ravi
la source
22
C'est une question valable. PIL est une bibliothèque Python célèbre et elle donne une erreur étrange dans certains systèmes Linux. Cette question et la réponse m'ont juste aidé. C'est une question SO typique.
neves
Le PRAGMATISTE et le TOC en moi disent qu'il appartient à ServerFault, pas à SO. Mais combien de programmeurs ont rencontré ce problème? Je vote pour déplacer la question vers ServerFault et laisser une redirection en place sur SO.
FlipMcF
1
Peut-être que vous pouvez lire ceci et l'essayer: stackoverflow.com/questions/18504835/…
Wee
1
@dkt J'utilise un oreiller et je suis ici parce que je viens de toucher ce problème.
Stephen Tetreault
1
@dkt Je sais, je disais simplement que le problème persiste était tout.
Stephen Tetreault

Réponses:

488

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

Si vous utilisez toujours PIL, vous devriez vraiment utiliser un oreiller ces jours-ci, donc pip uninstall PILavant de suivre ces instructions pour passer, ou si vous avez une bonne raison de rester avec PIL, puis 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 utilisez 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/

Réinstallez ensuite l'oreiller:

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

(Modifications pour inclure les commentaires des commentaires. Merci Charles Offenbacher pour avoir souligné que cela diffère pour 32 bits, et t-mart pour avoir suggéré l'utilisation de --no-cache-dir).

Rolo
la source
1
Le problème était que j'avais deux packages python. Un qui est livré avec ubuntu et un autre qui appartenait à Zope Server. D'une manière ou d'une autre, la bibliothèque était corrompue parce que je l'avais mal installée dans le mauvais paquet. Sinon, il n'y a pas de problème.
Ravi
2
Pour mémoire, cela ne fonctionne que sur x86_64, j'ai dû exécuter: sudo ln -s /usr/lib/i386-linux-gnu/libz.so / usr / lib /; sudo ln -s /usr/lib/i386-linux-gnu/libfreetype.so.6 / usr / lib /; sudo ln -s /usr/lib/i386-linux-gnu/libjpeg.so / usr / lib /
Charles Offenbacher
2
Pour tous ceux qui débutent avec PIL, notez que ce n'est plus à jour et n'est plus vraiment maintenu. Si vous souhaitez travailler avec des images dans votre projet, utilisez PILLOW qui est une fourchette ou PIL mise à jour et maintenue.
Dhiraj Thakur
1
@Rolo après 3 heures, votre deuxième option a fonctionné pour moi, merci beaucoup, l'oreiller est stupide
Akshay Mukadam
5
Les versions récentes de pip doivent mettre en cache les packages téléchargés et leurs compilations. Certes, cela a été très long pip installla première fois, mais les désinstallations et (ré) installations suivantes ont été étrangement rapides. Quoi qu'il en soit , les méthodes ci-dessus n'ont pas fonctionné pour moi jusqu'à ce que je cours pip install --no-cache-dir pillow. Bonne chance!
t-mart
63

Pour ceux sur 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à installé PIL (via pip sur un virtualenv), j'ai couru:

pip uninstall PIL
pip install PIL --upgrade

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

MISE À JOUR (24/04/14) :

Les versions plus récentes de pip nécessitent des indicateurs supplémentaires pour télécharger les 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 plus d'informations: pip install PIL ne pas installer dans virtualenv

MISE À JOUR 2 :

Si sur OSX Mavericks, vous voudrez définir le ARCHFLAGSdrapeau 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
zeantsoi
la source
J'ai eu ce problème après la mise à niveau vers Mavericks (10.9). Le message SO suivant a résolu le problème pour moi. Faites défiler la page jusqu'au commentaire d'installation des outils de ligne de commande par @Formulka
tatlar
Si vous êtes sur Ubuntu 12.04 64 bits, essayez la solution de zeantsoi, je sais qu'il l'a fait pour OSX mais je l'ai essayé et cela a fonctionné pour moi.
impasse
J'ai eu cette erreur: impossible de trouver des téléchargements qui satisfont à l'exigence pil
RicardoGonzales
@RicardoGonzales, vous utilisez probablement une version de pip qui vous oblige à passer des drapeaux supplémentaires. Veuillez consulter la mise à jour de ma réponse.
zeantsoi
@zeantsoi télécharge maintenant le package et l'installe mais après le message "Nettoyage". J'ai eu l'erreur se réfère à: "-c import setuptools, tokenize; __ file ... ..." un conseil?
RicardoGonzales
29

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

Sur ubuntu, installez le package requis:

sudo apt-get install libjpeg-dev

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

Remplacez ensuite PIL par un oreiller:

pip uninstall PIL
pip install pillow
Dennis Golomazov
la source
Je l'ai fait il y a quelque temps, et soudain, l'erreur est réapparue aujourd'hui. Oreiller Mise à niveau fixe le problème: pip install pillow --upgrade.
Dennis Golomazov
21

Les travaux suivis 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 "- Prise en charge 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 a raté /usr/local/lib/python2.7/dist-packages/PIL-1.1.7-py2.7-linux-x86_64.egg/, donc je modifie l' ~/.bashrcajout du 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/

alors enfin ça marche !!

Jason Huang
la source
salut, je pense que j'ai un problème avec le chemin python qui ne fonctionne pas car l'installation des statistiques PIL qui prennent en charge --JPEG est disponible. cependant, faire des commandes avec des images .jpeg provoque des erreurs jpeg du décodeur. stackoverflow.com/questions/18504835/…
Lucas Ou-Yang
16

Sur Fedora 17, j'ai dû installer libjpeg-develpuis réinstaller PIL:

sudo yum install --assumeyes libjpeg-devel
sudo pip-python install --upgrade PIL
Bengt
la source
1
Il en va de même pour RHEL / CentOS.
Jakub Roztocil
14

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

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

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

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 et ainsi de suite est activé, car j'ai précédemment installé les bibliothèques requises via apt (libjpeg-dev libpng12-dev libfreetype6-dev libtiff-dev)

daveoncode
la source
Merci pour cela. L'option
--no
12

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

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

installer brew libjpeg

réinstaller oreiller (j'utilise oreiller au lieu de PIL)

installer pip -I oreiller

moogoo
la source
2
Cela peut être dû à un problème distinct avec mon installation de brew, mais je devais le faire brew unlink jpeg && brew link jpegavant d'installer Pillow.
Lucas
11
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 de la source et pour une raison quelconque, cela n'a pas fonctionné

EMP
la source
Liste de toutes les dépendances requises .
Paolo
9

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

Au final, il n'a fallu que réinstaller Pillow:

sudo pip uninstall Pillow
sudo pip install Pillow
Dimitris
la source
3

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

IOError: décodeur jpeg non disponible

1) installez les outils Xcode (ouvrez votre terminal et exécutez:) xcode-select --install- extrait de ce post: impossible d'installer PIL après Mac OS X 10.9

2) installez les packages libpng et libjpeg (programme d'installation combiné) à partir de ce lien: http://ethan.tira-thompson.com/Mac_OS_X_Ports.html

3) redémarrer (pas sûr que c'était obligatoire)

4) Réinstallez PIL avec run 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

oho
la source
2

Cette question a été publiée il y a un bon moment et la plupart des réponses sont également assez anciennes. Donc, quand j'ai passé des heures à essayer de comprendre cela, rien n'a fonctionné, et j'ai essayé toutes les suggestions de ce post.

J'obtenais toujours les erreurs JPEG standard lorsque j'essayais de télécharger un JPG sous ma forme 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 j'ai remarqué des paquets supplémentaires pour libjpeg. J'ai installé ces derniers et mon problème a été résolu:

sudo apt-get install libjpeg62 libjpeg62-dev

L' installation de ces enlevés libjpeg-dev, libjpeg-turbo8-devet libjpeg8-dev.

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

À votre santé

nicorellius
la source
1

Même problème ici, JPEG support availablemais 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, mais après plusieurs heures, j'ai réalisé que l'utilisation sudo pip installne fonctionne pas comme prévu, en combinaison avecvirtualenv . Que je suis bête.

Utiliser sudoefficacement lance la commande dans un nouveau shell (ma compréhension de cela peut ne pas être tout à fait correct) où virtualenv n'est pas activé, ce qui signifie que les packages seront installés à la place dans l'environnement global. (Cela a gâché les choses, je pense que j'avais 2 installations différentes de Pillow.)

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

kaka
la source
1

Pour Fedora

Installer les pré-requis
sudo dnf install make automake gcc gcc-c++ kernel-devel rpm-build libjpeg-devel zlib-devel python-devel
Installer maintenant Pillow

sudo pip install pillow

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

Ajinkya Bhosale
la source
0

J'ai d'abord dû supprimer les dossiers python dans le dossier caché user / appData (ce qui créait d'énormes maux de tête), en plus de désinstaller Python. J'ai ensuite installé WinPython Distribution: http://code.google.com/p/winpython/ qui inclut PIL

Jill
la source
4
Le développement de Python sous Windows est pénible. Je vous déconseille.
eviltnan