2010-03-21 14 views
68

Quando installo PIL usando easy_install o buildout, viene installato in tale modo, che devo fare "import Image", non "da PIL import Image".Il problema con l'installazione di PIL usando virtualenv o buildout

Tuttavia, se eseguo "apt-get install python-imaging" o utilizzo "pip -E test_pil install PIL", tutto funziona correttamente.

Ecco alcuni esempi di come mi tenta di installare PIL utilizzando virtualenv:

# virtualenv --no-site-packages test_pil 
# test_pil/bin/easy_install PIL 
# test_pil/bin/python 
Python 2.5.1 (r251:54863, Feb 6 2009, 19:02:12) 
[GCC 4.0.1 (Apple Inc. build 5465)] on darwin 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import PIL 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ImportError: No module named PIL 

vedo, che easy_install PIL pacchetto nell'uovo, e PIP non lo fa. Stessa cosa con buildbot, usa le uova.

Come è possibile installare PIL correttamente, utilizzando easy_install o buildout?

risposta

95

La versione PIL impacchettata su pypi (dall'autore) non è compatibile con setuptools e quindi non è facile_installabile. Le persone hanno creato versioni easy_installable altrove. Attualmente, è necessario specificare un URL find-link e utilizzare pip ottenere un buon pacchetto:

pip install --no-index -f http://dist.plone.org/thirdparty/ -U PIL 

Utilizzando pip install con l'evitare di correre il rischio di trovare la PyPI (non fisso) originale --no-index del PIL. Se si dovesse utilizzare easy_install, è necessario utilizzare un collegamento diretto al tarball di origine di una versione corretta; easy_install ostinatamente utilizza ancora il link PyPI il find-link URL:

easy_install http://dist.plone.org/thirdparty/PIL-1.1.7.tar.gz 

Per includere PIL in un buildout, specificare l'uovo con lo stesso perno di versione o utilizzare una sezione versioni:

[buildout] 
parts = 
find-links = 
    http://dist.plone.org/thirdparty/ 
eggs = 
    PIL 
versions = versions 

[versions] 
PIL = 1.1.7 

Modifica marzo 2011: le correzioni per risolvere i problemi di imballaggio sono state unite in PIL's development tree ora, quindi questa soluzione potrebbe presto diventare obsoleta.

Modifica febbraio 2013: basta usare Pillow e fatelo. :-) Chiaramente, l'attesa per il pacchetto originale da riparare non è stata ripagata.

+0

L'autore viene informato di questo, in modo che venga corretto anche su pypi? – blueyed

+0

Ho capito che l'autore non è interessato a risolvere questo problema su pypi. –

+1

Ho provato la versione mostrata nell'esempio ma ho ancora avuto lo stesso problema. Ho finito per utilizzare l'installer dal sito Web pythonware, quindi ho copiato la directory PIL e il file PIL.pth sul virtualenv, e per me ha risolto il problema. – tponthieux

78

Usa Pillow: the "friendly" PIL fork :-) Offre:

  • compatibilità completa setuptools
  • più veloce di rilascio del ciclo
  • Nessuna modifica del codice immagine che si differenziano dal PIL (vale a dire che ha lo scopo di tenere traccia di tutte le modifiche del codice immagine Pil, e fare nessuna delle sue proprie modifiche senza segnalazione a monte.)
  • binari Windows

Se il PIL fa esattamente ciò che fa il cuscino, allora la forcella muore. Finché ciò non accade, abbiamo un cuscino.

DISCLAIMER: Sono l'autore di fork e Pillow è stato creato principalmente per semplificare il mio lavoro (sebbene sia bello vedere anche altri che lo utilizzano).

EDIT: Pillow 2.0.0 è stato rilasciato il 15 marzo 2013. Offre supporto per Python 3 e molte correzioni di errori/miglioramenti.Mentre cerchiamo ancora di tenere traccia delle modifiche con il PIL upstream, (sfortunatamente o fortunatamente a seconda di come lo guardate), il cuscino ha iniziato ad allontanarsi dal PIL.

+0

Grazie per il tuo lavoro! Ho anche cercato di far funzionare il mio piramide buildout con PIL, ma ora ho scoperto questa discussione e l'ho sostituita con Pillow e ha funzionato. :-) – therealmarv

+1

Grazie per il cuscino @aclark!Dopo almeno un anno di difficoltà con il PIL ogni volta che costruisco nuove macchine e ho sempre problemi con il supporto JPEG e PNG su Ubuntu con virtualenv, buildout e setuptools, ho trovato Pillow! Ora, solo una definizione di setuptools e funziona. Mille grazie! – JeromeParadis

+0

Non penso che questo sia più necessario, però: funziona con gli strumenti di configurazione ora giusto? – ranman

5

Su Windows, ho installato PIL in un virtualenv come segue:

Installare PIL nel vostro python site-packages globali eseguendo il file exe da: http://www.pythonware.com/products/pil/

Poi, come un "fai da te -er ", copia il file PIL.pth e la directory PIL in C: \ Python25 \ Lib \ site-packages nella directory dei siti del tuo sito virtualenv. Sì, pitone è ancora un ambiente di "sporcarsi le mani" ...

7

Per Ubuntu ho trovato avevo bisogno di installare il pacchetto di header C per la mia versione di Python (2,7)

sudo apt-get install python2.7-dev

Successivamente , pip install pil ha funzionato.

+0

Avevo anche bisogno del file Python.h durante il tentativo di installare PIL in una virtualenv di Ubuntu, questo risolve il problema! –

Problemi correlati