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?
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
).
Pour ceux qui utilisent OSX, j’ai utilisé le binaire suivant pour obtenir libpng et libjpeg installés à l’échelle du système:
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
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
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 !!
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
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)
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
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é
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
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
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é
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!
Pour Fedora
Installer les pré-requisSudo 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.
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
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!