Python Image Library falla con el mensaje "decodificador JPEG no disponible" - PIL


305

PIL admite JPEG en mi sistema.

Cada vez que hago una carga, mi código falla con:

File "PIL/Image.py", line 375, in _getdecoder
    raise IOError("decoder %s not available" % decoder_name)
IOError: decoder jpeg not available

¿Cómo puedo resolver esto?


22
Es una pregunta valida. PIL es una famosa biblioteca de Python y da un error extraño en algunos sistemas Linux. Esta pregunta y la respuesta me ayudaron. Es una pregunta típica de SO.
neves

PRAGMATIST y OCD en mí dicen que pertenece a ServerFault, no a SO. Pero, ¿cuántos programadores han tenido este problema? Voto para mover la pregunta a ServerFault y dejo una redirección en SO.
FlipMcF

1
Tal vez pueda leer esto y probarlo: stackoverflow.com/questions/18504835/…
Wee

1
@dkt Estoy usando la almohada y estoy aquí porque acabo de llegar a este problema.
Stephen Tetreault

1
@dkt Lo sé, solo decía que el problema aún persiste, eso era todo.
Stephen Tetreault

Respuestas:


488

Se necesita libjpeg-dev para poder procesar archivos JPEG con la almohada (o PIL), por lo que debe instalarlo y luego volver a compilar la almohada. También parece que se necesita libjpeg8-dev en Ubuntu 14.04

Si todavía está usando PIL, entonces realmente debería estar usando una almohada en estos días, así que primero pip uninstall PILantes de seguir estas instrucciones para cambiar, o si tiene una buena razón para quedarse con PIL, reemplace "almohada" con "PIL" en la parte inferior. )

En Ubuntu:

# install libjpeg-dev with apt
sudo apt-get install libjpeg-dev
# if you're on Ubuntu 14.04, also install this
sudo apt-get install libjpeg8-dev

# reinstall pillow
pip install --no-cache-dir -I pillow

Si eso no funciona, intente uno de los siguientes, dependiendo de si está en Ubuntu de 64 bits o 32 bits.

Para Ubuntu x64:

sudo ln -s /usr/lib/x86_64-linux-gnu/libjpeg.so /usr/lib
sudo ln -s /usr/lib/x86_64-linux-gnu/libfreetype.so /usr/lib
sudo ln -s /usr/lib/x86_64-linux-gnu/libz.so /usr/lib

O para Ubuntu 32bit:

sudo ln -s /usr/lib/i386-linux-gnu/libjpeg.so /usr/lib/
sudo ln -s /usr/lib/i386-linux-gnu/libfreetype.so.6 /usr/lib/
sudo ln -s /usr/lib/i386-linux-gnu/libz.so /usr/lib/

Luego reinstale la almohada:

pip install --no-cache-dir -I pillow

(Las ediciones incluyen comentarios de los comentarios. Gracias Charles Offenbacher por señalar que esto difiere para 32 bits, y t-mart por sugerir el uso de --no-cache-dir).


1
El problema era que tenía dos paquetes de Python. Uno que se envía con ubuntu y otro que pertenecía a Zope Server. De alguna manera, la biblioteca estaba dañada porque la había instalado incorrectamente en el paquete incorrecto. De lo contrario, no hay problema.
Ravi

2
Para el registro, que solo funciona en x86_64, tuve que ejecutar: sudo ln -s /usr/lib/i386-linux-gnu/libz.so / usr / lib /; sudo ln -s /usr/lib/i386-linux-gnu/libfreetype.so.6 / usr / lib /; sudo ln -s /usr/lib/i386-linux-gnu/libjpeg.so / usr / lib /
Charles Offenbacher

2
Para cualquiera que recién esté comenzando con PIL debe tener en cuenta que está desactualizado y ya no se mantiene. Si desea trabajar con imágenes en su proyecto, use PILLOW que se actualiza y mantiene fork o PIL.
Dhiraj Thakur

1
@Rolo después de 3 horas, tu segunda opción funcionó para mí, gracias, la almohada es tonta
Akshay Mukadam

55
Las versiones recientes de pip deben almacenar en caché los paquetes descargados y sus compilaciones. Ciertamente, fue muy largo pip installla primera vez, pero luego las desinstalaciones y (re) instalaciones posteriores fueron sospechosamente rápidas. De todos modos , los métodos anteriores no funcionaron para mí hasta que corrí pip install --no-cache-dir pillow. ¡Buena suerte!
Martes

63

Para aquellos en OSX, utilicé el siguiente binario para instalar libpng y libjpeg en todo el sistema:

libpng y libjpeg para OSX

Como ya tenía PIL instalado (a través de pip en un virtualenv), ejecuté:

pip uninstall PIL
pip install PIL --upgrade

Esto resolvió el decoder JPEG not availableerror para mí.

ACTUALIZACIÓN (24/4/14) :

Las versiones más recientes de pip requieren marcas adicionales para descargar bibliotecas (incluido PIL) de fuentes externas. Intenta lo siguiente:

pip install PIL --allow-external PIL --allow-unverified PIL

Consulte la siguiente respuesta para obtener información adicional: pip install PIL dont install in virtualenv

ACTUALIZACIÓN 2 :

Si está en OSX Mavericks, querrá establecer la ARCHFLAGSbandera como @RicardoGonzales comenta a continuación :

ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future pip install PIL --allow-external PIL --allow-unverified PIL

Tuve este problema después de actualizar a Mavericks (10.9). La siguiente publicación SO resolvió el problema para mí. Desplácese hacia abajo hasta el comentario de instalación de herramientas de línea de comandos por @Formulka
tatlar

Si estás en Ubuntu 12.04 64 bit, prueba la solución de zeantsoi, sé que lo hizo para OSX pero lo probé y funcionó para mí.
punto muerto

Recibí este error: No pude encontrar ninguna descarga que satisfaga el requisito pil
RicardoGonzales

@RicardoGonzales, probablemente estés ejecutando una versión de pip que requiere que pases banderas adicionales. Por favor, vea la actualización de mi respuesta.
zeantsoi

@zeantsoi ahora está descargando el paquete e instalando, pero después del mensaje "Limpieza". Obtuve el error que se refiere a: "-c import setuptools, tokenize; __ file ... ..." ¿Algún consejo?
RicardoGonzales

29

Esta es la única forma que funcionó para mí. Instalar paquetes y reinstalar PIL no funcionó.

En ubuntu, instale el paquete requerido:

sudo apt-get install libjpeg-dev

(es posible que también desee instalar libfreetype6 libfreetype6-dev zlib1g-devpara habilitar otros decodificadores).

Luego reemplace PIL con almohada:

pip uninstall PIL
pip install pillow

Lo hice hace algún tiempo, y de repente el error volvió a aparecer hoy. Almohada actualización solucionó el problema: pip install pillow --upgrade.
Dennis Golomazov

21

Lo siguiente funciona en Ubuntu 12.04:

pip uninstall PIL
apt-get install libjpeg-dev
apt-get install libfreetype6-dev
apt-get install zlib1g-dev
apt-get install libpng12-dev
pip install PIL --upgrade

cuando vea "- Soporte JPEG disponible", eso significa que funciona.

Pero, si aún no funciona cuando editas tu imagen jpeg, ¡comprueba la ruta de Python! mi ruta de python se perdió /usr/local/lib/python2.7/dist-packages/PIL-1.1.7-py2.7-linux-x86_64.egg/, así que edito el ~/.bashrccódigo siguiente y lo agrego a este archivo:

Editar: export PYTHONPATH=$PYTHONPATH:/usr/local/lib/python2.7/dist-packages/PIL-1.1.7-py2.7-linux-x86_64.egg/

entonces, finalmente, ¡funciona!


hola, creo que tengo un problema con la ruta de Python que no funciona porque instalo estadísticas de PIL que: la compatibilidad con JPEG está disponible. sin embargo, hacer pil opts con imágenes .jpeg provoca errores jpeg del decodificador. stackoverflow.com/questions/18504835/…
Lucas Ou-Yang

16

En Fedora 17 tuve que instalar libjpeg-devely luego reinstalar PIL:

sudo yum install --assumeyes libjpeg-devel
sudo pip-python install --upgrade PIL

1
Lo mismo ocurre con RHEL / CentOS.
Jakub Roztocil

14

La respuesta de Rolo es excelente, sin embargo, tuve que reinstalar Pillow pasando por alto el caché de pip (introducido con el pip 7) de lo contrario no se volverá a compilar correctamente. El comando es:

pip install -I --no-cache-dir -v Pillow

y puede ver si Pillow se ha configurado correctamente leyendo en los registros esto:

PIL SETUP SUMMARY
    --------------------------------------------------------------------
    version      Pillow 2.8.2
    platform     linux 3.4.3 (default, May 25 2015, 15:44:26)
                 [GCC 4.8.2]
    --------------------------------------------------------------------
    *** TKINTER support not available
    --- JPEG support available
    *** OPENJPEG (JPEG2000) support not available
    --- ZLIB (PNG/ZIP) support available
    --- LIBTIFF support available
    --- FREETYPE2 support available
    *** LITTLECMS2 support not available
    *** WEBP support not available
    *** WEBPMUX support not available
    --------------------------------------------------------------------

como puede ver, el soporte para jpg, tiff, etc. está habilitado, porque anteriormente instalé las bibliotecas necesarias a través de apt (libjpeg-dev libpng12-dev libfreetype6-dev libtiff-dev)


Gracias por esto. La opción --no-cache-dir también me ayudó
dranxo

12

En Mac OS X Mavericks (10.9.3), resolví esto haciendo lo siguiente:

Instalar libjpeg by brew (sistema de gestión de paquetes)

brew install libjpeg

reinstalar la almohada (uso almohada en lugar de PIL)

pip install -I almohada


2
Esto podría deberse a un problema separado con mi instalación de brew, pero tenía que hacerlo brew unlink jpeg && brew link jpegantes de instalar Pillow.
Lucas

11
apt-get install libjpeg-dev
apt-get install libfreetype6-dev
apt-get install zlib1g-dev
apt-get install libpng12-dev

Instale estos y asegúrese de instalar PIL con pip porque lo compilé desde la fuente y por alguna razón no funcionó


Lista de todas las dependencias requeridas .
Paolo

9

Ya estaba usando Pillowy obtuve el mismo error. Intenté instalar libjpego libjpeg-devsegún lo sugerido por otros, pero me dijeron que ya había instalada una versión (más nueva).

Al final todo lo que tomó fue reinstalar Pillow:

sudo pip uninstall Pillow
sudo pip install Pillow

3

Soy demasiado novato para comentar la publicación de zeantsoi; (. Así que aquí está lo que tenía que hacer para resolver en OSX en 10.9.1 el

IOError: decodificador jpeg no disponible

1) instale las herramientas de Xcode (abra su terminal y ejecute:) xcode-select --install- tomado de esta publicación: No se puede instalar PIL después de Mac OS X 10.9

2) instale el paquete libpng y libjpeg (instalador combinado) desde este enlace: http://ethan.tira-thompson.com/Mac_OS_X_Ports.html

3) reiniciar (no estoy seguro de que fuera obligatorio)

4) Vuelva a instalar PIL con run pip install -I PIL(como había instalado inicialmente PIL antes de tener el problema)

Espero que esto ayude y no confunda más ...

_oho


2

Esta pregunta se publicó hace bastante tiempo y la mayoría de las respuestas también son bastante antiguas. Entonces, cuando pasé horas tratando de resolver esto, nada funcionó, e intenté todas las sugerencias en esta publicación.

Todavía recibía los errores JPEG estándar al intentar cargar un JPG en mi formulario de avatar de Django:

raise IOError("decoder %s not available" % decoder_name)
OSError: decoder jpeg not available

Luego revisé el repositorio para Ubuntu 12.04 y noté algunos paquetes adicionales para libjpeg. Instalé estos y mi problema se resolvió:

sudo apt-get install libjpeg62 libjpeg62-dev

La instalación de estos removidos libjpeg-dev, libjpeg-turbo8-devy libjpeg8-dev.

¡Espero que esto ayude a alguien en el año 2015 y más allá!

Salud


1

El mismo problema aquí, JPEG support availablepero aún así IOError: decoder/encoder jpeg not available, excepto que uso Pillow y no PIL.

Intenté todo lo anterior y más, pero después de muchas horas me di cuenta de que usarlo sudo pip installno funciona como esperaba, en combinación con virtualenv. Tonto de mí.

Usar sudoefectivamente inicia el comando en un nuevo shell (mi comprensión de esto puede no ser del todo correcta) donde virtualenv no está activado, lo que significa que los paquetes se instalarán en el entorno global. (Esto arruinó las cosas, creo que tenía 2 instalaciones diferentes de Pillow).

Limpié las cosas, cambié el usuario a root y lo reinstalé en virtualenv y ahora funciona.
¡Espero que esto ayude a alguien!


1

Para Fedora

Instalar requisito previo
sudo dnf install make automake gcc gcc-c++ kernel-devel rpm-build libjpeg-devel zlib-devel python-devel
Ahora instale Pillow

sudo pip install pillow

Nota - Para libjpeg y zlib estamos instalando paquetes libjpeg-devel y zlib-devel en Fedora / CentOS / Red Hat


0

Primero tuve que eliminar las carpetas de Python en la carpeta oculta user / appData (que estaba creando grandes dolores de cabeza), además de desinstalar Python. Luego instalé WinPython Distribution: http://code.google.com/p/winpython/ que incluye PIL


44
El desarrollo de Python bajo Windows es doloroso. Aconsejaría no hacerlo.
eviltnan

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.