Python Image Library ha esito negativo con il messaggio "decoder JPEG non disponibile" - PIL


305

PIL supporta JPEG nel mio sistema.

Ogni volta che eseguo un caricamento, il mio codice non riesce con:

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

Come posso risolvere questo?


22
È una domanda valida PIL è una famosa libreria Python e dà uno strano errore in alcuni sistemi Linux. Questa domanda e la risposta mi hanno appena aiutato. È una tipica domanda SO.
neves

Il PRAGMATIST e il DOC in me dicono che appartiene a ServerFault, non a SO. Ma quanti programmatori hanno riscontrato questo problema? Voto per spostare la domanda su ServerFault e lasciare un reindirizzamento attivo su SO.
FlipMcF

1
Forse puoi leggere questo e provarlo: stackoverflow.com/questions/18504835/…
Wee

1
@dkt Sto usando il cuscino e sono qui perché ho appena riscontrato questo problema.
Stephen Tetreault,

1
@dkt Lo so, stavo solo affermando che il problema persiste ancora.
Stephen Tetreault,

Risposte:


488

libjpeg-dev è necessario per poter elaborare jpeg con cuscino (o PIL), quindi è necessario installarlo e quindi ricompilare il cuscino. Sembra anche che libjpeg8-dev sia necessario su Ubuntu 14.04

Se stai ancora usando PIL, allora dovresti davvero usare il cuscino in questi giorni, quindi pip uninstall PILprima di seguire queste istruzioni per cambiare, o se hai una buona ragione per attaccare con PIL, sostituisci "cuscino" con "PIL" in basso ).

Su 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

Se non funziona, prova una delle opzioni seguenti, a seconda che tu sia su Ubuntu a 64 bit o 32 bit.

Per 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 per Ubuntu 32 bit:

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/

Quindi reinstallare il cuscino:

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

(Modifica per includere feedback dai commenti. Grazie Charles Offenbacher per averlo segnalato differisce per 32 bit e t-mart per aver suggerito l'uso di --no-cache-dir).


1
Il problema era che avevo due pacchetti Python. Uno fornito con Ubuntu e un altro appartenente a Zope Server. In qualche modo, la libreria era danneggiata perché l'avevo installata in modo errato nel pacchetto sbagliato. Altrimenti, non ci sono problemi.
Ravi,

2
Per la cronaca, che funziona solo su x86_64, ho dovuto eseguire: 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
Per chiunque abbia appena iniziato con PIL dovrebbe notare che è obsoleto e non è più mantenuto. Se vuoi lavorare con le immagini nel tuo progetto, usa CUSCINO che viene aggiornato e mantenuto fork o PIL.
Dhiraj Thakur,

1
@Rolo dopo 3 ore la tua seconda opzione ha funzionato per me grazie mille il cuscino è
stupido

5
Le versioni recenti di pip devono memorizzare nella cache i pacchetti scaricati e le loro compilazioni. Certamente, pip installla prima volta è stato molto lungo , ma poi le successive disinstallazioni e (re) installazioni sono state sospettosamente veloci. Comunque , i metodi sopra non hanno funzionato per me fino a quando non ho corso pip install --no-cache-dir pillow. In bocca al lupo!
Martedì

63

Per quelli su OSX, ho usato il seguente binario per installare libpng e libjpeg in tutto il sistema:

libpng e libjpeg per OSX

Poiché avevo già installato PIL (tramite pip su un virtualenv), ho eseguito:

pip uninstall PIL
pip install PIL --upgrade

Questo ha risolto l' decoder JPEG not availableerrore per me.

AGGIORNAMENTO (24/04/14) :

Le versioni più recenti di pip richiedono flag aggiuntivi per scaricare librerie (incluso PIL) da fonti esterne. Prova quanto segue:

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

Vedere la seguente risposta per ulteriori informazioni: pip install PIL non installare in virtualenv

AGGIORNAMENTO 2 :

Se su OSX Mavericks, ti consigliamo di impostare la ARCHFLAGSbandiera come commenti @RicardoGonzales di seguito :

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

Ho avuto questo problema dopo l'aggiornamento a Mavericks (10.9). Il seguente post SO ha risolto il problema per me. Scorri verso il basso fino al commento sugli strumenti della riga di comando di installazione di @Formulka
tatlar

Se sei su Ubuntu 12.04 a 64 bit, prova la soluzione di zeantsoi, so che l'ha fatto per OSX ma l'ho provato e ha funzionato per me.
deadlock

Ho riscontrato questo errore: Impossibile trovare i donwnload che soddisfano il requisito pil
RicardoGonzales

@RicardoGonzales, probabilmente stai eseguendo una versione di pip che richiede il passaggio di flag aggiuntivi. Si prega di consultare l'aggiornamento alla mia risposta.
zeantsoi,

@zeantsoi ora sta scaricando il pacchetto e installandolo ma dopo il messaggio "Pulizia". Ho ricevuto l'errore si riferisce a: "-c import setuptools, tokenize; __ file ... ..." qualche consiglio?
RicardoGonzales,

29

Questo è l'unico modo che ha funzionato per me. L'installazione dei pacchetti e la reinstallazione di PIL non funzionavano.

Su Ubuntu, installa il pacchetto richiesto:

sudo apt-get install libjpeg-dev

(potresti anche voler installare libfreetype6 libfreetype6-dev zlib1g-devper abilitare altri decodificatori).

Quindi sostituire PIL con cuscino:

pip uninstall PIL
pip install pillow

L'ho fatto qualche tempo fa e improvvisamente l'errore è riapparso oggi. Cuscino Aggiornamento risolto il problema: pip install pillow --upgrade.
Dennis Golomazov, l'

21

Il seguito funziona su 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

quando vedi "- Supporto JPEG disponibile" significa che funziona.

Ma, se non funziona ancora quando modifichi l'immagine jpeg, controlla il percorso di Python !! il mio percorso python è mancato /usr/local/lib/python2.7/dist-packages/PIL-1.1.7-py2.7-linux-x86_64.egg/, quindi modifico l' ~/.bashrcaggiunta del seguente codice a questo file:

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

poi, finalmente, funziona !!


ciao, penso che sto avendo un problema con il percorso python che non funziona perché l'installazione di statistiche PIL che - supporto JPEG È disponibile. tuttavia, fare effettivamente operazioni pilota con immagini .jpeg provoca errori jpeg del decodificatore. stackoverflow.com/questions/18504835/…
Lucas Ou-Yang,

16

Su Fedora 17 ho dovuto installare libjpeg-devele successivamente reinstallare PIL:

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

1
Lo stesso vale per RHEL / CentOS.
Jakub Roztocil,

14

La risposta di Rolo è eccellente, tuttavia ho dovuto reinstallare Pillow bypassando la cache di pip (introdotta con pip 7), altrimenti non verrà ricompilata correttamente !!! Il comando è:

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

e puoi vedere se Pillow è stato configurato correttamente leggendo nei log questo:

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
    --------------------------------------------------------------------

come puoi vedere, il supporto per jpg, tiff e così via è abilitato, perché in precedenza avevo installato le librerie richieste tramite apt (libjpeg-dev libpng12-dev libfreetype6-dev libtiff-dev)


Grazie per questo. Anche l'opzione --no-cache-dir mi ha aiutato
dranxo,

12

Su Mac OS X Mavericks (10.9.3), ho risolto questo facendo quanto segue:

Installa libjpeg da brew (sistema di gestione dei pacchetti)

brew install libjpeg

reinstallare il cuscino (io uso il cuscino invece del PIL)

installazione pip -I cuscino


2
Ciò potrebbe essere dovuto a un problema separato con la mia installazione di brew, ma ho dovuto farlo brew unlink jpeg && brew link jpegprima di installare Pillow.
Lucas,

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

Installa questi e assicurati di installare PIL con pip perché l'ho compilato dal sorgente e per qualche motivo non ha funzionato


Elenco di tutte le dipendenze richieste .
Paolo,

9

Stavo già utilizzando Pillowe ho avuto lo stesso errore. Ho provato a installare libjpego libjpeg-devcome suggerito da altri ma mi è stato detto che era già installata una versione (più recente).

Alla fine è bastato reinstallare Pillow:

sudo pip uninstall Pillow
sudo pip install Pillow

3

Sono troppo novellino per commentare il post di zeantsoi; (. Quindi ecco il suo quello che dovevo fare per risolvere su OSX il 10.9.1 il

IOError: decoder jpeg non disponibile

1) installa gli strumenti Xcode (apri il tuo terminale ed esegui:) xcode-select --install- tratto da questo post: Impossibile installare PIL dopo Mac OS X 10.9

2) installa il pacchetto libpng e libjpeg (programma di installazione combo) da questo link: http://ethan.tira-thompson.com/Mac_OS_X_Ports.html

3) riavviare (non sono sicuro che fosse obbligatorio)

4) Reinstalla PIL con run pip install -I PIL(come avevo inizialmente installato PIL prima di avere il problema)

Spero che questo aiuto e non confondere di più ...

_Oh o


2

Questa domanda è stata pubblicata un po 'di tempo fa e anche la maggior parte delle risposte è piuttosto vecchia. Quindi, quando ho trascorso ore a cercare di capirlo, niente ha funzionato e ho provato tutti i suggerimenti in questo post.

Stavo ancora ricevendo gli errori JPEG standard quando provavo a caricare un JPG nel mio modulo avatar di Django:

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

Poi ho controllato il repository per Ubuntu 12.04 e ho notato alcuni pacchetti extra per libjpeg. Ho installato questi e il mio problema è stato risolto:

sudo apt-get install libjpeg62 libjpeg62-dev

L'installazione di questi rimossi libjpeg-dev, libjpeg-turbo8-deve libjpeg8-dev.

Spero che questo aiuti qualcuno nel 2015 e oltre!

Saluti


1

Lo stesso problema qui, JPEG support availablema ancora ottenuto IOError: decoder/encoder jpeg not available, tranne che uso Pillow e non PIL.

Ho provato tutto quanto sopra e altro, ma dopo molte ore ho capito che l'uso sudo pip installnon funziona come previsto, in combinazione con virtualenv. Sciocco me

Usare in modo sudoefficace avvia il comando in una nuova shell (la mia comprensione di ciò potrebbe non essere del tutto corretta) in cui virtualenv non è attivato, il che significa che i pacchetti verranno invece installati nell'ambiente globale. (Questo ha incasinato le cose, penso di avere avuto 2 diverse installazioni di Pillow.)

Ho ripulito le cose, ho cambiato utente in root e reinstallato in virtualenv e ora funziona.
Spero che questo possa aiutare qualcuno!


1

Per Fedora

Installa i prerequisiti
sudo dnf install make automake gcc gcc-c++ kernel-devel rpm-build libjpeg-devel zlib-devel python-devel
Ora installa il cuscino

sudo pip install pillow

Nota - Per libjpeg e zlib stiamo installando i pacchetti libjpeg-devel e zlib-devel in Fedora / CentOS / Red Hat


0

Per prima cosa ho dovuto eliminare le cartelle di Python nella cartella nascosta user / appData (che stava creando enormi mal di testa), oltre a disinstallare Python. Quindi ho installato WinPython Distribution: http://code.google.com/p/winpython/ che include PIL


4
Lo sviluppo di Python sotto Windows è doloroso. Consiglio di non farlo.
Eviltnan,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.