Библиотека изображений Python выходит из строя с сообщением "JPEG декодера недоступен" - PIL
PIL поддерживает JPEG в моей системе.
Всякий раз, когда я выполняю загрузку, мой код не работает с:
File "PIL/Image.py", line 375, in _getdecoder
raise IOError("decoder %s not available" % decoder_name)
IOError: decoder jpeg not available
Как я могу это решить?
Ответы
Ответ 1
libjpeg-dev должен иметь возможность обрабатывать jpegs с подушкой (или PIL), поэтому вам нужно установить его, а затем перекомпилировать подушку. Также кажется, что libjpeg8-dev необходим на Ubuntu 14.04
Если вы все еще используете PIL, тогда вы действительно должны использовать подушку в наши дни, поэтому сначала pip uninstall PIL
перед тем, как следовать этим инструкциям для переключения, или если у вас есть веская причина для прикрепления к PIL, замените "подушку" на "PIL" ниже).
В 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
Если это не сработает, попробуйте выполнить одно из следующих действий, в зависимости от того, находитесь ли вы на 64-битном или 32-битном Ubuntu.
Для 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
Или для 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/
Затем переустановите подушку:
pip install --no-cache-dir -I pillow
(Редактирует, чтобы включить отзывы от комментариев. Спасибо Чарльз Оффенбахер за то, что он указывает на 32bit и t-mart, предлагая использовать --no-cache-dir
).
Ответ 2
Для тех, кто в OSX, я использовал следующий двоичный код, чтобы получить libpng и libjpeg, установленные в системе:
libpng и libjpeg для OSX
Поскольку у меня уже был установлен PIL (через pip на virtualenv), я побежал:
pip uninstall PIL
pip install PIL --upgrade
Это разрешило ошибку decoder JPEG not available
для меня.
ОБНОВЛЕНИЕ (4/24/14):
Более новые версии pip требуют дополнительных флагов для загрузки библиотек (включая PIL) из внешних источников. Попробуйте следующее:
pip install PIL --allow-external PIL --allow-unverified PIL
Дополнительную информацию см. в следующем ответе: pip install PIL не устанавливать в virtualenv
ОБНОВЛЕНИЕ 2:
Если на OSX Mavericks вам нужно установить флаг ARCHFLAGS
в качестве @RicardoGonzales комментариев ниже:
ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future pip install PIL --allow-external PIL --allow-unverified PIL
Ответ 3
Это единственный способ, который сработал у меня. Установка пакетов и переустановка PIL не работали.
На ubuntu установите требуемый пакет:
sudo apt-get install libjpeg-dev
(вы также можете установить libfreetype6 libfreetype6-dev zlib1g-dev
для включения других декодеров).
Затем замените PIL на подушку:
pip uninstall PIL
pip install pillow
Ответ 4
Следование работает над 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
когда вы видите "поддержка JPEG", что означает, что он работает.
Но, если он все еще не работает, когда вы редактируете свое jpeg-изображение, проверьте путь python!
мой путь к python пропустил /usr/local/lib/python2.7/dist-packages/PIL-1.1.7-py2.7-linux-x86_64.egg/
, поэтому я отредактировал ~/.bashrc
добавить следующий код в этот файл:
Изменить: export PYTHONPATH=$PYTHONPATH:/usr/local/lib/python2.7/dist-packages/PIL-1.1.7-py2.7-linux-x86_64.egg/
тогда, наконец, он работает!!
Ответ 5
В Fedora 17 мне пришлось установить libjpeg-devel
и после этого переустановить PIL
:
sudo yum install --assumeyes libjpeg-devel
sudo pip-python install --upgrade PIL
Ответ 6
Ответ Rolo превосходный, однако мне пришлось переустановить Pillow, минуя кэп pip (введенный с помощью pip 7), иначе он не будет правильно перекомпилирован!!!
Команда:
pip install -I --no-cache-dir -v Pillow
и вы можете увидеть, правильно ли настроена подушка, прочитав в журналах это:
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
--------------------------------------------------------------------
поскольку вы можете видеть, что поддержка jpg, tiff и т.д. включена, потому что я ранее установил необходимые библиотеки через apt (libjpeg-dev libpng12-dev libfreetype6-dev libtiff-dev)
Ответ 7
В Mac OS X Mavericks (10.9.3) я решил это, выполнив следующее:
Установите libjpeg с помощью brew (система управления пакетами)
brew установить libjpeg
переустановите подушку (я использую подушку вместо PIL)
pip install -I подушка
Ответ 8
apt-get install libjpeg-dev
apt-get install libfreetype6-dev
apt-get install zlib1g-dev
apt-get install libpng12-dev
Установите их и не забудьте установить PIL с помощью pip, потому что я скомпилировал его из источника и по какой-то причине он не работал.
Ответ 9
Я уже использовал Pillow
и получил ту же ошибку.
Пробовал устанавливать libjpeg
или libjpeg-dev
, как это было предложено другими, но ему сказали, что уже установлена (более новая) версия.
В итоге все, что нужно, это переустановка Pillow
:
sudo pip uninstall Pillow
sudo pip install Pillow
Ответ 10
Я слишком новичок, чтобы комментировать zeantsoi post; (Итак, вот его, что мне нужно было сделать, чтобы решить OSX на 10.9.1
IOError: декодер jpeg недоступен
1) установить инструменты Xcode (откройте свой терминал и выполните: xcode-select --install
) - взято из этого сообщения: Невозможно установить PIL после Mac OS X 10.9
2) установить libpng и libjpeg package (комбо-установщик) по этой ссылке: http://ethan.tira-thompson.com/Mac_OS_X_Ports.html p >
3) перезагрузка (не уверен, что это было обязательно)
4) Переустановить PIL с запуском pip install -I PIL
(так как я первоначально установил PIL до возникновения проблемы)
Надейтесь на эту помощь и не путайте больше...
_oho
Ответ 11
Этот вопрос был опубликован довольно давно, и большинство ответов тоже довольно старые. Поэтому, когда я часами пытался понять это, ничего не работало, и я пробовал все предложения в этом сообщении.
Я все еще получал стандартные ошибки JPEG при попытке загрузить JPG в мою форму аватара Django:
raise IOError("decoder %s not available" % decoder_name)
OSError: decoder jpeg not available
Затем я проверил репозиторий для Ubuntu 12.04 и заметил некоторые дополнительные пакеты для libjpeg
. Я установил их, и моя проблема была решена:
sudo apt-get install libjpeg62 libjpeg62-dev
Установка этих удаленных libjpeg-dev
, libjpeg-turbo8-dev
и libjpeg8-dev
.
Надеюсь, это поможет кому-то в 2015 году и далее!
Приветствия
Ответ 12
Такая же проблема здесь, JPEG support available
, но все равно получена IOError: decoder/encoder jpeg not available
, за исключением того, что я использую Pillow, а не PIL.
Я пробовал все выше и более, но после много часов я понял, что использование sudo pip install
не работает, как я ожидал, в сочетании с virtualenv
. Глупый я.
Использование sudo
эффективно запускает команду в новой оболочке (мое понимание этого может быть не совсем корректным), где virtualenv не активирован, а значит, пакеты будут установлены в глобальной среде. (Это все испортило, я думаю, у меня было две разные установки подушки.)
Я очистил все, изменил пользователя на root и переустановил в virtualenv, и теперь он работает.
Надеюсь, это поможет кому-то!
Ответ 13
Для Fedora
Установите предварительный запрос
sudo dnf install make automake gcc gcc-c++ kernel-devel rpm-build libjpeg-devel zlib-devel python-devel
Теперь установите Pillow
sudo pip install pillow
Примечание. Для libjpeg и zlib мы устанавливаем пакеты libjpeg-devel и zlib-devel в Fedora/CentOS/Red Hat
Ответ 14
Сначала мне пришлось удалить папки python в скрытой папке user/appData (которая создавала огромные головные боли), в дополнение к удалению Python. Затем я установил дистрибутив WinPython: http://code.google.com/p/winpython/, который включает PIL
Ответ 15
Для тех, кто на Mac OS Mountain Lion, я последовал за генералом zeantsoi, но он не работает.
В конце концов я решил решить эту проблему: http://appelfreelance.com/2010/06/libjpeg-pil-snow-leopard-python2-6-_jpeg_resync_to_restart/
Теперь я счастливо запускаю свой script для jpeg!