Ошибка декодера JPEG недоступна при следующем учебнике по приложению Django
Я следую учебнику Django, который включает загрузку изображений, и столкнулся с этой проблемой. Я пытался несколько раз устанавливать и переустанавливать PIL, libjpeg и libfreetype6, но пока ничего не работает. Я потратил несколько часов, пытаясь найти решение, и сейчас очень расстроен. Пожалуйста, помогите.
Вот результат selftest.py после того, как я переустановил PIL на мой 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.
Ответы
Ответ 1
Есть несколько случаев с PIL, которые приводят к аналогичному опыту.
Если вы установили PIL из virtualenv, используя
pip install PIL
Затем вы должны были установить версии dev libjpeg, libz раньше.
Предполагая, что вы находитесь в поле Ubuntu,
pip uninstall PIL
apt-get install libjpeg-dev zlib1g-dev libpng12-dev
pip install PIL
должно быть достаточно. Вы также можете установить Pillow вместо PIL, он лучше работает с setuptools и может быть установлен в virtualenv.
Ответ 2
Я нашел, что это отлично работает для меня:
pip uninstall PIL
pip install Pillow
то я перезапустил сервер:
kill -HUP XXX
где XXX - это идентификатор процесса вашего сервера.
Ответ 3
Я уже использовал Pillow
и получил ту же ошибку.
Пробовал устанавливать libjpeg
или libjpeg-dev
, как это было предложено другими, но ему сказали, что уже установлена (более новая) версия.
В итоге все, что нужно, это переустановка Pillow
:
sudo pip uninstall Pillow
sudo pip install Pillow
Ответ 4
Если вы используете Fedora, сделайте это, прежде чем делать подушку для установки pipeow:
yum install libjpeg-devel zlib1g-devel libpng12-devel