Ошибка библиотеки изображений 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

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

15 ответов


libjpeg-dev требуется, чтобы иметь возможность обрабатывать JPEG с подушкой (или PIL), поэтому вам нужно установить его, а затем перекомпилировать подушку. Также кажется, что libjpeg8-dev необходим на Ubuntu 14.04

если вы все еще используете PIL, то вы действительно должны использовать подушку в эти дни, поэтому сначала pip uninstall PIL перед выполнением этих инструкций для переключения, или если у вас есть веская причина для прилипания с PIL, то замените "подушку" на "PIL" ниже).

On 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

если это не работает, попробуйте один из приведенных ниже, в зависимости от того, находитесь ли вы на 64bit или 32bit 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).


для тех, кто на 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

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

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

sudo apt-get install libjpeg-dev

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

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

pip uninstall PIL
pip install pillow

следующие работы на 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 добавьте в этот файл следующий код:

Edit:export PYTHONPATH=$PYTHONPATH:/usr/local/lib/python2.7/dist-packages/PIL-1.1.7-py2.7-linux-x86_64.egg/

потом, наконец, это работает!!


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

sudo yum install --assumeyes libjpeg-devel
sudo pip-python install --upgrade PIL

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


в Mac OS X Mavericks (10.9.3) я решил это, выполнив следующие действия:

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

заварить установить libjpeg

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

pip install-I подушка


apt-get install libjpeg-dev
apt-get install libfreetype6-dev
apt-get install zlib1g-dev
apt-get install libpng12-dev

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


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

в конце концов все, что потребовалось переустановить Pillow:

sudo pip uninstall Pillow
sudo pip install Pillow

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

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

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

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

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

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

надеюсь, что это поможет и больше не путай ...

_oho


этот вопрос был опубликован довольно давно, и большинство ответов тоже довольно старый. Поэтому, когда я потратил часы, пытаясь понять это, ничего не сработало, и я попробовал все предложения в этом посте.

Я все еще получал стандартные ошибки 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 году и за его пределами!

Ура


та же проблема здесь,JPEG support available но все равно получил IOError: decoder/encoder jpeg not available, за исключением того, что я использую подушку, а не PIL.

Я пробовал все вышеперечисленное и многое другое, но после много часа я понял, что с помощью sudo pip install не работает, как я ожидал, в сочетании с virtualenv. Глупый я.

используя sudo эффективно запускает команду в новой оболочке (мое понимание этого может быть не вполне верным) где virtualenv не активирован, что означает, что пакеты будут установлены в окружающей среде. (это испортило все, я думаю, у меня было 2 разных установки подушки.)

я очистил вещи, изменил пользователя на root и переустановил в virtualenv, и теперь он работает.
Надеюсь, это поможет кому-то!


Для Fedora

установить условие
sudo dnf install make automake gcc gcc-c++ kernel-devel rpm-build libjpeg-devel zlib-devel python-devel
Теперь установите подушку

sudo pip install pillow

Примечание - Для libjpeg и zlib мы устанавливаем libjpeg-devel и zlib-devel пакеты в Fedora / CentOS / Red Hat


сначала мне пришлось удалить папки python в скрытой папке user / appData (что создавало огромные головные боли), в дополнение к удалению Python. Затем я установил дистрибутив WinPython:http://code.google.com/p/winpython/ который включает PIL


для тех, кто на Mac OS Mountain Lion, я следовал anwser из zeantsoi, но это не работает.

Я, наконец, закончил с решением этого поста: http://appelfreelance.com/2010/06/libjpeg-pil-snow-leopard-python2-6-_jpeg_resync_to_restart/

теперь я с удовольствием запускаю свой скрипт для jpeg !