Python PIL no puede localizar mi “libjpeg”

¡No puedo usar PIL porque no puede encontrar mi libjpeg!

Primero, instalé PIL por defecto. Y cuando ejecuté el selftest.py , me dio:

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

Luego, seguí las instrucciones en línea para cambiar el setup.py de PIL a

 JPEG_ROOT = "/usr/lib" 

Porque cuando locate libjpeg , esto es lo que obtengo:

 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 

Entonces, ejecuté setup.py install nuevo … e hice selftest.py . Y sigo teniendo el mismo error!

Hay al menos 3 conjuntos de encabezados que querrás instalar. 1 más si quieres lidiar con Tiff’s

freetype, libjpeg, zlib, todos los cuales estarán en los siguientes paquetes en 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

Como lo hizo antes, querrá editar las siguientes variables en el archivo setup.py:

FREETYPE_ROOT JPEG_ROOT ZLIB_ROOT

Establecer valores en / usr / lib o / usr / lib64 según su plataforma. Una vez hecho esto lo más probable es que quieras correr

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

Eso obligará a reconstruir toda su lib para PIL y reinstalarlos en bruto.

También necesita los encabezados libjpeg, no solo la biblioteca en sí. Esos paquetes generalmente se llaman algo que termina en encabezados o dev, dependiendo de la distribución que tengas.

Tuve el mismo problema. En mi caso, necesito establecer:

 JPEG_ROOT="/usr/lib64/" 

en lugar de:

 JPEG_ROOT="/usr/lib/" 

Buena suerte.

También puedes intentar usar una almohada en lugar de una PIL.

Almohada es una bifurcación PIL para “fomentar el desarrollo activo de PIL”. En las versiones 1.7.0 y 1.7.1 hicieron algunos cambios para admitir multi-arch (ver el registro de cambios ).

Hoy me enfrenté al mismo problema, y ​​encontré la solución. Básicamente se trata de quitar el PIL, instalar lipjpeg a través de Fink y volver a instalar el PIL.

Escribí un artículo explicando paso a paso cómo hacerlo. Si es interesante mira esto.