Come posso installare la libreria di imaging Python (PIL)?


35

Come posso installare la libreria di imaging Python (PIL) su Ubuntu?

Ho provato a farlo

sudo apt-get install python-imaging

ma ora quando eseguo python selftest.py (uno script che ho ricevuto da qualche parte sul http://pythonware.com/products/pil/ sito Web) ottengo (tra gli altri messaggi di avviso):

...
*** JPEG support not installed
*** ZLIB (PNG/ZIP) support not installed
...
*** 1 tests of 57 failed.

Ho in qualche modo incasinato il PIL - come posso risolverlo?

Forse il PIL va bene, ma quel "selftest.py" non è davvero il programma giusto per verificare se il PIL è installato correttamente - come posso sapere se il PIL è installato correttamente o no?

(Sto usando Ubuntu 12.04 LTS "Precise Pangolin").

(Quello che sto alla fine cercando di fare è aggiungere un generatore di codici a barre 2D ad alcuni codici Python, e tutti i generatori di codici a barre 2D che ho potuto trovare scritti in Python sembravano tutti usare il PIL).


2
Potresti provare a utilizzare il PIL in un'applicazione, potrebbe esserci solo un problema con selftest.py
Aaron Hill,

1
Nel 18.04 sembra che tu lo faccia sudo apt-get install python-pilo sudo apt-get install python3-pil.
Shule

^ Sicuramente, sudo apt-get install python-pilho appena lavorato per me su raspbian.
Alecxe,

Risposte:


25

Qualcosa di simile mi è successo, l'ho risolto in questo modo

sudo apt-get install libjpeg libjpeg-dev libfreetype6 libfreetype6-dev zlib1g-dev

E prova a installarlo tramite pip install PIL.

Maggiori informazioni su ciò che pipè può essere trovato qui . In breve, è un modo conveniente (e diventa uno standard) di installare librerie Python.

se continua a fallire, può essere dovuto alla ricerca del PIL in quelle librerie in un percorso diverso.

Si scopre che le installazioni APT mettono le librerie in / usr / lib / x86_64-linux-gnu e PIL le cercherà in / usr / lib / . Quindi devi creare collegamenti simbolici per PIL per vederli.

Prova a vedere se libjpeg e libz esistono in / usr / lib / x86_64-linux-gnu e crea un link simbolico in questo modo

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

Fonte: http://jj.isgeek.net/2011/09/install-pil-with-jpeg-support-on-ubuntu-oneiric-64bits/


Questo non ha funzionato per me su Ubuntu 12.04 64 bit.
Gus E

1
se si adatta alle tue esigenze, puoi provare 'cuscino'. È un calo in sostituzione di PIL.
Hernantz,

7
Quando possibile, utilizzare pillow. È essenzialmente PIL ma in realtà mantenuto.
Thane Brimhall,

Il pacchetto zlib1g-dev non è disponibile, ma è indicato da un altro pacchetto. Ciò può significare che il pacchetto è mancante, è obsoleto o è disponibile solo da un'altra fonte E: impossibile individuare il pacchetto libjpeg E: impossibile individuare il pacchetto libjpeg-dev E: impossibile individuare il pacchetto libfreetype6-dev E: pacchetto 'zlib1g -dev 'non ha candidati all'installazione
Aalok,

Il pacchetto di imaging python in Ubuntu 12.04 LTS è collegato alla libreria JPEG, e il log delle modifiche menziona l'interruzione multiarch prima di luglio 2011. Forse anche questo selftest.pyera stato rotto a causa di ciò, ma ciò non influiva necessariamente su nient'altro.
Josip Rodin,

30

La soluzione di cui sopra non ha funzionato per me su Ubuntu 12.10 poiché libjpeg non era disponibile nel repository.

Ciò che ha finito per funzionare per me è stato:

sudo apt-get build-dep python-imaging
sudo apt-get install libjpeg62 libjpeg62-dev

Se viene visualizzato l'errore "Devi inserire alcuni URI" sorgente "nel tuo sources.list", assicurati che il tuo /etc/apt/sources.list abbia voci deb-src che corrispondono alle tue voci deb.

Quindi è necessario collegare simbolicamente i file dalla loro posizione effettiva sul server alla posizione in cui PIL li prevede.

Versione a 32 bit

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

Versione a 64 bit

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

Finalmente, pip install PIL

Successo!

inserisci qui la descrizione dell'immagine


Aggiornamento settembre 2014

Pillow è una forcella più moderna di PIL.

#jpeg support
sudo apt-get install libjpeg-dev
#tiff support
sudo apt-get install libtiff-dev
#freetype support
sudo apt-get install libfreetype6-dev
#openjpeg200support (needed to compile from source)
wget http://downloads.sourceforge.net/project/openjpeg.mirror/2.0.1/openjpeg-2.0.1.tar.gz
tar xzvf openjpeg-2.0.1.tar.gz
cd openjpeg-2.0.1/
sudo apt-get install cmake
cmake .
sudo make install
#install pillow
pip install pillow

1
Funziona per me il 13.04 con Pillow, senza collegamento simbolico.
Eugene Nagorny,

2
ha funzionato anche per me (14.04 LTS a 64 bit, non modificato dall'alto): sudo apt-get build-dep python-imaging sudo apt-get install libjpeg62 libjpeg62-dev
Peter Teoh

Avevo solo bisogno di "apt-get build-dep python-imaging"
peterretief

13

Voglio solo aggiungere che pip install pilnon funziona più, almeno sulla mia macchina, devi farlo

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


5
Prova pip install Pillowinvece di pip install pill(quest'ultima non esiste)
aclark

@Lynob è uguale a PIL? ed è supportato da TkInker?
3kstc,

@ 3kstc sì, lo è
Lynob,

4

Le risposte di cui sopra creano collegamenti per librerie x64 in posizioni x86. Invece vorrei scaricare la fonte PIL quindi aggiungere queste righe in setup.py:

    add_directory(library_dirs, "/usr/lib/x86_64-linux-gnu")
    add_directory(library_dirs, "/lib/x86_64-linux-gnu")

dopo queste righe (~ linea 211)

    # standard locations
    add_directory(library_dirs, "/usr/local/lib")
    add_directory(include_dirs, "/usr/local/include")

    add_directory(library_dirs, "/usr/lib")
    add_directory(include_dirs, "/usr/include")

reinstallare PIL. Se stai usando pip:

pip uninstall PIL

Quindi dalla directory di origine eseguire:

python setup.py install

2

Questa soluzione funziona per me su Ubuntu 14.04 poiché libjpeg non era disponibile nel repository.

Cosa ha funzionato per me

sudo apt-get build-dep python-imaging
sudo apt-get install libjpeg62 libjpeg62-dev

2

sudo apt-get install python-imagingora installa Pillow non PIL . Per quanto riguarda selftest.py, potrebbe essere necessario controllare l'origine per eseguirlo. E, naturalmente, è necessario installare le dipendenze se si desidera che PIL le supporti, ad es

sudo apt-get install libjpeg libjpeg-dev libfreetype6 libfreetype6-dev zlib1g-dev

Per eseguire una versione di PIL più recente di quella inclusa in Ubuntu ::

pip install Pillow

2

Avevo bisogno di installare Pillow in un virtualenv il 14.04 (non usando i pacchetti di sistema).

Per costruire il cuscino da PyPI all'interno di un virtualenv (Python 2.7):

$ sudo apt-get build-dep pillow
$ virtualenv venv
$ source venv/bin/activate
(venv)$ pip install pillow

... quindi puoi importare PIL .

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.