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.
Я написал статью , рассказывая шаг за шагом, как это сделать. Если интересно, проверьте это.