Python Imaging Library «IOError: decoder jpeg not available»

Últimamente me ha tocado montar y administrar un par de servidores en los que las aplicaciones corren en Python. Uno de ellos necesitaba la librería de gestión de imagenes PIL de Python (Python Imaging Library), por lo que procedí a instalarla del modo que hacemos cualquier instalación de módulos Python. Descargar e instalar:

tar -xzvf Imaging-1.1.6.tar.gz
cd Imaging-1.1.6
python setup.py install

El fallo fue no ejecutar antes de instalar el módulo los test que te informan si todas las dependencias se cumplen correctamente:

python setup.py build_ext -i
python selftest.py

Entonces, el desarrollador de la aplicación confirmó que algo extraño sucedía. No había problema para gestionar imágenes .gif o .png, pero todo tratamiento de imagenes .jpg terminaban en fallos de imagen corrupta y diversos errores.

Investigando esta fuente, me dispuse a ejecutar los tests que comentaba anteriormente y efectivamente el fallo era que no existía decodificador para jpeg:

IOError: decoder jpeg not available

Procedí a instalarlo desde los repositorios de CentOS:

yum install libjpeg.i386 libjpeg-devel.i386

Tras hacerlo seguía fallando, y era debido a que era necesario reinstalar el módulo de Python PIL para que encontrara las rutas a las librerías correspondientes de libjpeg. Fue necesario eliminar completamente PIL y volverlo a instalar, sino no funciona:

rm -rf /usr/lib/python2.4/site-packages/PIL/
rm -f /usr/lib/python2.4/site-packages/PIL*

A partir de aquí, reinstalé el módulo y podemos observar que los test funcionaron correctamente:

$ python setup.py build_ext -i
$ python selftest.py
57 tests passed.
$ python setup.py install

2 comentarios en “Python Imaging Library «IOError: decoder jpeg not available»

  1. Ey! Gracias por esta entrada, la verdad es que me ha solucionado el mismo problema que tenias! Muchas gracias!

Comments are closed.