2009-09-28 17 views
11

No puedo usar PIL porque no puede encontrar mi libjpeg!Python PIL no puede encontrar mi "libjpeg"

Primero, instalé PIL por defecto. Y cuando me encontré con 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. 

Entonces, he seguido las instrucciones en línea para cambiar de setup.py a

JPEG_ROOT = "/usr/lib" 

PIL Porque cuando locate libjpeg, esto es lo que me sale:

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 

Así que ejecuté setup.py install nuevamente ... y lo hice selftest.py. ¡Y sigo recibiendo el mismo error!

Respuesta

19

Hay al menos 3 conjuntos de encabezado que desea instalar. 1 más si se quiere tratar con freetype

de Tiff, libjpeg, zlib todos los cuales estarán en los siguientes paquetes en CentOS:

== 32 bits: zlib-devel.i386 libjpeg-devel. i386 freetype-devel.i386

== 64 bits: zlib-devel.x86_64 libjpeg-devel.x86_64 freetype-devel.x86_64

como lo hacía antes tendrá que editar el siguiente variabl ES en el archivo setup.py:

FREETYPE_ROOT JPEG_ROOT ZLIB_ROOT

sentado allí los valores a/usr/lib o/usr/lib64 basados ​​en su plataforma. Una vez hecho esto, lo más probable es que desee ejecutar

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

Eso obligará a reconstruir toda su lib para PIL y volver a instalarlas sin procesar.

+0

¡Gracias! FWIW, esto es lo que hice (en una caja de 64 bits): 'sudo yum install zlib-devel.x86_64 libjpeg-devel.x86_64 freetype-devel.x86_64' luego' sudo pip install pil' (Esto requiere que tengas pip gestor de paquetes ya instalado.) – DPlusV

3

También necesita los encabezados libjpeg, no solo la biblioteca en sí. Esos paquetes suelen denominarse algo que termina en encabezados o dev, según la distribución que tenga.

+0

Gracias. ¿Cómo obtengo los encabezados? Tengo distribución CentOS. Hice "localizar libjpeg" y no pude encontrar nada que termine en .headers – TIMEX

+2

Parece que se llaman libjpeg-devel en CentOS. –

+0

Utilice la 'herramienta de gestión de paquetes' para instalar 'libjpeg-devel'. Tenga en cuenta que puede haber otros paquetes '-devel' que necesite instalar para otros formatos, ej. 'libpng-devel'. – bobince

0

Hoy tuve el mismo problema y encontré la solución. Básicamente se trata de eliminar el PIL, instalar lipjpeg a través de Fink y volver a instalar el PIL.

Escribí un article diciendo paso a paso cómo hacerlo. Si es interesante, mira esto.

+4

El enlace al artículo no funciona (nunca más). –

3

Tuve el mismo problema. En mi caso, tengo que configurar:

JPEG_ROOT="/usr/lib64/" 

en lugar de:

JPEG_ROOT="/usr/lib/" 

Buena suerte.

1

También podría intentar usar Pillow en lugar de PIL.

La almohada es una horquilla PIL para "fomentar el desarrollo activo de PIL". En las versiones 1.7.0 y 1.7.1 hicieron algunos cambios para admitir múltiples arcos (consulte changelog).

+0

el mismo problema con Pillow; (Y la solución 'JPEG_ROOT ="/usr/lib64/"' no ayuda con Pillow –

Cuestiones relacionadas