PIL — (JPEG) Исправляем ошибку raise IOError(«decoder %s not available» % decoder_name)

Дата публикации: 28-05-2013 | Автор: MelfisFettel | Рубрика: Python, Ubuntu Server

Python PIL IOError(decoder %s not available % decoder_name)Для конвертации и изменения размеров изображений, под Python я использую PIL. Бывает так, что сам PIL установлен, библиотека libjpeg-dev установлена, а PIL все равно выдает ошибку raise IOError(«decoder %s not available» % decoder_name) Это легко поправить. Все ниже описанное использовалось на Ubuntu 10.04 / 11.04 /12.04. Исправим ошибку с не найденным декодером.

Для начала на всякий случай попробуем установить библиотеку libjpeg-dev (По названию можно понять что эта библиотека необходима для работы с jpeg файлами.)

1
apt-get install libjpeg-dev
apt-get install libjpeg-dev

Переустановите PIL:

1
pip install -I PIL
pip install -I PIL

После успешной установки проверьте работоспособность Вашего скрипта. В случае если ошибка повторилась, необходимо создать ссылки на библиотеки:

Для систем x64:

1
2
3
ln -s /usr/lib/x86_64-linux-gnu/libjpeg.so /usr/lib
ln -s /usr/lib/x86_64-linux-gnu/libfreetype.so /usr/lib
ln -s /usr/lib/x86_64-linux-gnu/libz.so /usr/lib
ln -s /usr/lib/x86_64-linux-gnu/libjpeg.so /usr/lib
ln -s /usr/lib/x86_64-linux-gnu/libfreetype.so /usr/lib
ln -s /usr/lib/x86_64-linux-gnu/libz.so /usr/lib

Для систем x86:

1
2
3
ln -s /usr/lib/i386-linux-gnu/libz.so /usr/lib/
ln -s /usr/lib/i386-linux-gnu/libfreetype.so.6 /usr/lib/
ln -s /usr/lib/i386-linux-gnu/libjpeg.so /usr/lib/
ln -s /usr/lib/i386-linux-gnu/libz.so /usr/lib/
ln -s /usr/lib/i386-linux-gnu/libfreetype.so.6 /usr/lib/
ln -s /usr/lib/i386-linux-gnu/libjpeg.so /usr/lib/

После чего снова пере установите PIL:

1
pip install -I PIL
pip install -I PIL

Может потребоваться выполнить!

1
sudo apt-get install libjpeg62 libjpeg62-dev zlib1g-dev libfreetype6 libfreetype6-dev
sudo apt-get install libjpeg62 libjpeg62-dev zlib1g-dev libfreetype6 libfreetype6-dev

После выполненных процедур, Ваши скрипты с использованием PIL должны быть полностью работоспособны.

Небольшая памятка

1
2
JPEG_ROOT = "/usr/local/lib"
from PIL import Image
JPEG_ROOT = "/usr/local/lib"
from PIL import Image
Понравилась статья? Расскажи друзьям:


Обсудить