La bibliothèque d'images Python échoue avec le message "decoder JPEG not available" - PIL

PIL supporte 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 résoudre ce problème?

297
demandé sur FlipMcF 2012-01-18 22:24:19

15 réponses

libjpeg-dev est nécessaire pour pouvoir traiter les jpegs avec pillow (ou PIL), vous devez donc l'installer et ensuite recompiler pillow. Il semble également que libjpeg8-dev soit nécessaire sur Ubuntu 14.04

si vous utilisez toujours PIL alors vous devriez vraiment utiliser l'oreiller ces jours-ci cependant, donc d'abord pip uninstall PIL avant de suivre ces instructions pour passer, ou si vous avez une bonne raison de coller avec PIL puis remplacer" oreiller "par" PIL " dans le 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 un des suivants, selon que vous êtes sur 64bit ou 32bit Ubuntu.

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éinstaller l'oreiller:

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

(modifications pour inclure la rétroaction des commentaires. Remercie Charles Offenbacher d'avoir souligné cette différence pour 32bit, et t-mart pour avoir suggéré l'utilisation de --no-cache-dir ).

477
répondu Rolo 2016-03-02 16:12:16

pour ceux sur OSX, j'ai utilisé le binaire suivant pour obtenir libpng et libjpeg installé à l'échelle du système:

libpng et 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.

mise à JOUR (4/24/14) :

nouvelles versions de pip nécessitent des drapeaux 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'infos: pip install PIL ne pas installer dans virtualenv

UPDATE 2 :

si sur OSX Mavericks, vous voulez mettre le drapeau ARCHFLAGS comme @RicardoGonzales commentaires ci-dessous :

ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future pip install PIL --allow-external PIL --allow-unverified PIL
64
répondu zeantsoi 2017-05-23 11:54:59

C'est la seule façon qui a fonctionné pour moi. Installer des paquets et réinstaller PIL n'a pas fonctionné.

sur ubuntu, installer le paquet requis:

sudo apt-get install libjpeg-dev

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

remplacer ensuite PIL par pillow:

pip uninstall PIL
pip install pillow
28
répondu Dennis Golomazov 2013-06-04 11:36:37

les travaux suivants 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 "-- JPEG de soutien disponible" qui signifie qu'il fonctionne.

mais, si cela ne fonctionne toujours pas lorsque vous éditez votre image jpeg, vérifiez le chemin python !! mon chemin python a manqué /usr/local/lib/python2.7/dist-packages/PIL-1.1.7-py2.7-linux-x86_64.egg/ , donc j'édite le ~/.bashrc ajouter le code suivant à ce fichier:

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

alors, enfin, ça marche!!!!

21
répondu Jason Huang 2014-01-07 08:12:02

sur Fedora 17 j'ai dû installer libjpeg-devel et ensuite réinstaller PIL :

sudo yum install --assumeyes libjpeg-devel
sudo pip-python install --upgrade PIL
16
répondu Bengt 2013-02-03 17:35:30

la réponse de Rolo est excellente, mais j'ai dû réinstaller Pillow en contournant pip cache (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 Oreiller a été correctement configuré en lisant 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 de jpg, tiff et ainsi de suite est activé, car j'ai déjà installé les bibliothèques nécessaires via apt (libjpeg-dev libpng12-dev libfreetype6-dev libtiff-dev)

14
répondu daveoncode 2015-06-13 18:16:02

sur Mac OS X Mavericks (10.9.3), j'ai résolu cela en faisant ce qui suit:

installer libjpeg par brew (système de gestion des paquets)

brew install libjpeg

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

pip install-je l'oreiller

12
répondu moogoo 2014-06-05 20:16:19
apt-get install libjpeg-dev
apt-get install libfreetype6-dev
apt-get install zlib1g-dev
apt-get install libpng12-dev

installez ceux-ci et assurez-vous d'installer PIL avec pip parce que je l'ai compilé à partir de la source et pour une raison quelconque, il n'a pas fonctionné

11
répondu EMP 2014-11-05 11:09:25

j'utilisais déjà Pillow et j'ai eu 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.

à la fin tout ce qu'il a fallu était de réinstaller Pillow :

sudo pip uninstall Pillow
sudo pip install Pillow
9
répondu Dimitris 2014-08-20 13:34:07

je suis trop débutant pour commenter zeantsoi post ;(. Voici donc son ce que je devais faire pour résoudre sur OSX le 10.9.1 le

IOError: décodeur jpeg n'est pas disponible

1) installer des outils Xcode (ouvrir votre terminal et exécuter: xcode-select --install ) - tiré de ce post: ne peut pas installer PIL après Mac OS X 10.9

2) installer libpng et libjpeg package (combo installer) depuis ce lien: http://ethan.tira-thompson.com/Mac_OS_X_Ports.html

3) reboot (pas sûr que ce soit obligatoire)

4) Re-installer PIL run pip install -I PIL (comme je l'avais d'abord installé la LIP avant d'avoir la question)

espère que cette AIDE et ne plus confondre ...

_oho

3
répondu oho 2017-05-23 12:02:47

cette question a été postée il y a un certain temps et la plupart des réponses sont assez anciennes. Alors, quand j'ai passé des heures à essayer de comprendre cela, rien n'a fonctionné, et j'ai essayé toutes les suggestions dans ce post.

je recevais encore les erreurs JPEG standard en essayant de télécharger un JPG dans ma forme Avatar Django:

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

puis j'ai vérifié le dépôt Pour Ubuntu 12.04 et j'ai remarqué quelques paquets supplémentaires pour libjpeg . J'ai installé ces et mon le problème a été résolu:

sudo apt-get install libjpeg62 libjpeg62-dev

installant ces supprimés libjpeg-dev , libjpeg-turbo8-dev , et libjpeg8-dev .

Espérons que cela aide quelqu'un dans l'année 2015 et au-delà!

Cheers

2
répondu nicorellius 2015-06-05 18:55:43

même problème ici, JPEG support available mais j'ai quand même IOError: decoder/encoder jpeg not available , sauf que j'utilise un oreiller et pas de PIL.

j'ai essayé tout ce qui précède et plus, mais après beaucoup heures, je me suis rendu compte que l'utilisation de sudo pip install ne fonctionne pas comme je l'espérais, en combinaison avec virtualenv . Je suis bête.

utilisant sudo lance effectivement la commande dans un nouveau shell (ma compréhension de ceci peut ne pas être entièrement correcte) où le virtualenv n'est pas activé, ce qui signifie que les paquets seront installés dans l'environnement global à la place. (Ce gâché les choses, je pense que j'ai eu 2 installations différentes de l'Oreiller.)

j'ai nettoyé les choses, changé utilisateur root et réinstallé dans le virtualenv et maintenant ça fonctionne.

J'espère que cela va aider quelqu'un!

1
répondu kaka 2013-09-16 20:02:55

Pour Fedora

Install pre-required
151980920 sudo dnf install make automake gcc gcc-c++ kernel-devel rpm-build libjpeg-devel zlib-devel python-devel

Maintenant, installez Pillow

sudo pip install pillow

Note - pour libjpeg et zlib, nous installons libjpeg-devel et zlib-devel paquets dans Fedora / CentOS /Red Hat

1
répondu Ajinkya Bhosale 2016-04-21 11:18:45

tout d'abord, j'ai dû supprimer les dossiers python dans hidden folder user/appData (qui créait d'énormes maux de tête), en plus de désinstaller Python. Puis j'ai installé la Distribution WinPython: http://code.google.com/p/winpython / qui comprend PIL

0
répondu Jill 2013-02-05 22:51:22

pour ceux sur Mac OS Mountain Lion, j'ai suivi l'anwser de zeantsoi, mais ça ne marche pas.

j'ai finalement fini avec la solution de ce post: 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
répondu Zhenyi Zhang 2013-07-24 20:51:06