web-dev-qa-db-fra.com

Erreur de décodeur JPEG non disponible lors de la réalisation du didacticiel de l'application photo Django

Je suis un tutoriel Django qui implique le téléchargement d’images, et j’ai rencontré ce problème. J'ai essayé d'installer et de réinstaller PIL, libjpeg et libfreetype6 plusieurs fois, mais rien ne semble fonctionner jusqu'à présent. J'ai passé plusieurs heures à essayer de trouver une solution et je suis très frustré à ce stade. S'il vous plaît aider.

Voici le résultat de selftest.py après la réinstallation de PIL sur mon mac:

PIL 1.1.6 BUILD SUMMARY
--------------------------------------------------------------------
version       1.1.6
platform      darwin 2.7.3 (v2.7.3:70274d53c1dd, Apr  9 2012, 20:52:43)
              [GCC 4.2.1 (Apple Inc. build 5666) (dot 3)]
--------------------------------------------------------------------
--- TKINTER support ok
*** JPEG support not available
--- ZLIB (PNG/Zip) support ok
*** FREETYPE2 support not available
--------------------------------------------------------------------
To add a missing option, make sure you have the required
library, and set the corresponding ROOT variable in the
setup.py script.

To check the build, run the selftest.py script.
rrdhcp-10-32-44-157:Imaging-1.1.6 pfg$ python selftest.py
*****************************************************************
Failure in example: _info(Image.open("Images/lena.jpg"))
from line #24 of selftest.testimage
Exception raised:
Traceback (most recent call last):
  File "./doctest.py", line 499, in _run_examples_inner
    exec compile(source, "<string>", "single") in globs
  File "<string>", line 1, in <module>
  File "./selftest.py", line 22, in _info
    im.load()
  File "PIL/ImageFile.py", line 180, in load
    d = Image._getdecoder(self.mode, d, a, self.decoderconfig)
  File "PIL/Image.py", line 375, in _getdecoder
    raise IOError("decoder %s not available" % decoder_name)
IOError: decoder jpeg not available
1 items had failures:
   1 of  57 in selftest.testimage
***Test Failed*** 1 failures.
*** 1 tests of 57 failed.
14
entrepaul

Il existe plusieurs cas de PIL qui conduisent à une expérience similaire. Si vous avez installé PIL à partir d’un serveur virtuel en utilisant:

pip install PIL

Ensuite, vous devriez avoir installé les dev versions de libjpeg, libz avant. En supposant que vous soyez sur une boîte Ubuntu, une

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

devrait suffire. Vous pouvez également installer Pillow au lieu de PIL, cela fonctionne mieux avec setuptools et peut être installé dans un virtualenv.

42
Steve K

J'ai trouvé que cela fonctionnait bien pour moi:

pip uninstall PIL
pip install Pillow

puis j'ai redémarré le serveur:

kill -HUP XXX

XXXest l'ID de processus du processus de votre serveur.

7
Hawkz

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
4
Dimitris

Si vous utilisez Fedora, faites-le avant d'installer un oreiller:

yum install libjpeg-devel zlib1g-devel libpng12-devel
0
Joepreludian