2009-09-28 4 views
11

Я не могу использовать PIL, потому что он не может найти мой libjpeg!Python PIL не может найти мой «libjpeg»

Во-первых, я установил PIL по умолчанию. И когда я побежал selftest.py, он дал мне:

IOError: decoder jpeg not available 1 
items had failures: 1 of 57 in 
selftest.testimage 
***Test Failed*** 1 failures. 
*** 1 tests of 57 failed. 

Затем я следовал инструкциям в Интернете, чтобы изменить PIL-х setup.py к

JPEG_ROOT = "/usr/lib" 

Потому что, когда я locate libjpeg, это то, что я получаю:

locate libjpeg 
/usr/lib/libjpeg.so.62 
/usr/lib/libjpeg.so.62.0.0 
/usr/lib64/libjpeg.so.62 
/usr/lib64/libjpeg.so.62.0.0 
/usr/share/doc/libjpeg-6b 
/usr/share/doc/libjpeg-6b/README 
/usr/share/doc/libjpeg-6b/usage.doc 
/var/cache/yum/base/packages/libjpeg-6b-37.i386.rpm 
/var/cache/yum/base/packages/libjpeg-6b-37.x86_64.rpm 

Итак, я побежал setup.py install еще раз ... и сделал selftest.py. И я все равно получаю ту же ошибку!

ответ

19

Там, по крайней мере, 3 набора заголовков, которые вы хотите установить. более 1, если вы хотите иметь дело с Tiff в

FreeType, libjpeg, ZLIB все из которых будут находиться в следующих пакетах на CentOS:

== 32 Bit: Zlib-devel.i386 libjpeg-Devel. i386 FreeType-devel.i386

== 64 Bit: Zlib-devel.x86_64 libjpeg-devel.x86_64 FreeType-devel.x86_64

Как вы сделали, прежде чем вы хотите отредактировать следующий variabl эс в setup.py файле:

FREETYPE_ROOT JPEG_ROOT ZLIB_ROOT

Установка там значения/USR/Lib или/USR/lib64 на основе платформы. После этого вы, скорее всего, хотите запустить

python setup.py build --force 
python setup.py install 

Это заставит перестраивать всю свою библиотеку для PIL и установите их в сыром виде.

+0

Спасибо! FWIW, это то, что я сделал (в 64-битном поле): 'sudo yum install zlib-devel.x86_64 libjpeg-devel.x86_64 freetype-devel.x86_64' then' sudo pip install pil' (Это требует, чтобы у вас был пип пакетный менеджер уже установлен.) – DPlusV

3

Вам также нужны заголовки libjpeg, а не только сама библиотека. Эти пакеты обычно называют чем-то, заканчивающимся заголовками или dev, в зависимости от того, какое у вас распределение.

+0

Спасибо. Как получить заголовки? У меня есть дистрибутив CentOS. Я «нашел libjpeg» и не смог найти ничего, что заканчивалось на .headers – TIMEX

+2

Кажется, что они называются libjpeg-devel на CentOS. –

+0

Используйте «средство управления пакетами» для установки 'libjpeg-devel'. Обратите внимание, что могут быть другие пакеты '-devel', которые необходимо установить для других форматов, например. 'Libpng-devel'. – bobince

0

Сегодня я столкнулся с той же проблемой, и я нашел решение. В основном это включает удаление PIL, установку lipjpeg через Fink и переустановку PIL.

Я написал сообщение article шаг за шагом, как это сделать. Если интересно, проверьте это.

+4

Ссылка на статью не работает (больше). –

3

У меня была та же проблема. В моем случае, мне нужно установить:

JPEG_ROOT="/usr/lib64/" 

вместо:

JPEG_ROOT="/usr/lib/" 

удачи.

1

Вы также можете попытаться использовать Pillow вместо PIL.

Подушка является вилкой PIL, чтобы «способствовать активному развитию PIL». В версиях 1.7.0 и 1.7.1 они внесли некоторые изменения для поддержки многоадресной (см. changelog).

+0

та же проблема с подушкой; (И решение 'JPEG_ROOT ="/usr/lib64/"' не помогает для подушки –

Смежные вопросы