Python PIL не может найти мой "libjpeg"

Я не могу использовать 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. И я все равно получаю ту же ошибку!

Ответ 1

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

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

== 32 бит: Zlib-devel.i386 libjpeg-devel.i386 FreeType-devel.i386

== 64 бит: Zlib-devel.x86_64 libjpeg-devel.x86_64 FreeType-devel.x86_64

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

FREETYPE_ROOT JPEG_ROOT ZLIB_ROOT

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

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

Это заставит перестроить всю вашу lib для PIL и переустановить их raw.

Ответ 2

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

Ответ 3

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

JPEG_ROOT="/usr/lib64/"

вместо:

JPEG_ROOT="/usr/lib/"

Удачи.

Ответ 4

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

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

Ответ 5

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

Я написал статью , рассказывая шаг за шагом, как это сделать. Если интересно, проверьте это.