Сбой библиотеки изображений Python с сообщением «декодер JPEG недоступен» - PIL - PullRequest
302 голосов
/ 18 января 2012

PIL поддерживает JPEG в моей системе.

Всякий раз, когда я делаю загрузку, мой код завершается с:

File "PIL/Image.py", line 375, in _getdecoder
    raise IOError("decoder %s not available" % decoder_name)
IOError: decoder jpeg not available

Как я могу решить эту проблему?

Ответы [ 15 ]

482 голосов
/ 11 апреля 2012

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

(Редактирует, чтобы включить обратную связь с комментариями. Спасибо Чарльзу Оффенбахеру за то, что он указал, что это отличается для 32-битного, и t-mart за предложение использовать --no-cache-dir).

63 голосов
/ 30 октября 2012

Для тех, кто работает в OSX, я использовал следующий двоичный файл для установки libpng и libjpeg по всей системе:

libpng & libjpeg для OSX

Поскольку у меня уже был установлен PIL (через pip на virtualenv), я запустил:

pip uninstall PIL
pip install PIL --upgrade

Это разрешило мне ошибку decoder JPEG not available.

ОБНОВЛЕНИЕ (24.04.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
28 голосов
/ 04 июня 2013

Это единственный способ, который работал для меня. Установка пакетов и переустановка PIL не сработали.

В Ubuntu установите необходимый пакет:

sudo apt-get install libjpeg-dev

(вы также можете установить libfreetype6 libfreetype6-dev zlib1g-dev для включения других декодеров).

Затем замените PIL на подушку:

pip uninstall PIL
pip install pillow
21 голосов
/ 04 июня 2013

Следующие работы на 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 пропущен /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/

тогда, наконец, это работает !!

16 голосов
/ 03 февраля 2013

На Fedora 17 мне пришлось установить libjpeg-devel, а затем переустановить PIL:

sudo yum install --assumeyes libjpeg-devel
sudo pip-python install --upgrade PIL
14 голосов
/ 13 июня 2015

Ответ Роло превосходен, однако мне пришлось переустанавливать 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)

12 голосов
/ 06 июня 2014

В Mac OS X Mavericks (10.9.3) я решил эту проблему следующим образом:

Установить libjpeg с помощью brew (система управления пакетами)

brew install libjpeg

переустановить подушку (я использую подушку вместо PIL)

pip install -I подушка

11 голосов
/ 05 ноября 2014
apt-get install libjpeg-dev
apt-get install libfreetype6-dev
apt-get install zlib1g-dev
apt-get install libpng12-dev

Установите их и обязательно установите PIL с pip, потому что я скомпилировал его из исходного кода и по какой-то причине он не работал

9 голосов
/ 20 августа 2014

Я уже использовал Pillow и получил ту же ошибку. Попытался установить libjpeg или libjpeg-dev, как предлагали другие, но ему сказали, что (более новая) версия уже установлена.

В итоге все, что нужно, это переустановить Pillow:

sudo pip uninstall Pillow
sudo pip install Pillow
3 голосов
/ 28 февраля 2014

Я слишком новичок, чтобы комментировать сообщение Zeantsoi; (. Так вот его то, что мне нужно было сделать, чтобы решить на OSX на 10.9.1

IOError: декодер jpeg недоступен

1) установить инструменты Xcode (открыть терминал и выполнить: xcode-select --install) - взято из этого поста: Невозможно установить PIL после Mac OS X 10.9

2) установить пакеты libpng и libjpeg (установщик комбо) по этой ссылке: http://ethan.tira -thompson.com / Mac_OS_X_Ports.html

3) перезагрузка (не уверен, что это было обязательно)

4) Переустановите PIL с запуском pip install -I PIL (как я изначально установил PIL до возникновения проблемы)

Надеюсь на эту помощь и не путайте больше ...

_oho

...