2010-06-19 10 views
15

Ho installato PIL (libreria di imaging Python).Errore PIL: il modulo _imaging C non è installato

Quando eseguo Python:

import PIL 
import Image 
import _imaging 

non ottengo errori. Tuttavia, quando si esegue la mia app, solleva

The _imaging C module not installed 
+0

Ho avuto lo stesso problema. L'installazione pulita di ** PIL 1.1.7 ** (attualmente più recente) sopra l'installazione pulita su ** python 2.7.8 ** (attualmente più recente) ha risolto il problema. Assicurati che il tuo python 2.7 sia ** 32-bit **. –

risposta

3

Ho postato questa risposta sul link che hai mandato (grazie per questo), ma pensato che mi piacerebbe scrivere un commento sul fonte pure. Ci scusiamo per il dupe post.

Speravo che ci fosse un modo per farlo senza ricompilare le cose. Mi capita di usare virtualenv. Ho trovato che se ho soffiato via la mia env virtuale installare e reinstallare con pip, l'Imaging ha iniziato a lavorare di nuovo. Questi passaggi sembrava funzionare (nota, sto usando OSX)

Non sono sicuro se questo importava, ma il controllo per vedere se jpeg è installato

winesap:~ $ port installed | grep -i jpeg 
    jpeg @7_0 
    jpeg @8a_0 (active) 

essere sicuro di avere installato PIP

sudo port -v install py26-pip 

Rimuovere il vecchio ambiente virtuale che avevo e ricrearlo

rm -rf ve 
virtualenv –no-site-packages –distribute ve 
. ./ve/bin/activate 

Installare pil e Djan andare nel virtualenv

echo “pil” > requirements.pip 
echo “django” >> requirements.pip 
pip-2.6 install -E ./ve/ -r requirements.pip 

Test per vedere se l'importazione funziona ora. Nota mancanza di odioso errore del modulo C

python 
>>import import ImageFont 
>> 

Spero che questo sia utile.

+0

Sì non è un problema, la mia è stata basata esclusivamente sul solo pura apache mod_wsgi Django e Python – ApPeL

3

Su Windows, rimuovere _imaging.pyd e _imagingft.pyd all'interno di C: \ Python27. Lasciare tutti i moduli _imaging all'interno del C: \ Python27 \ lib \ site-packages \ cartella PIL.

Funziona per me.

2

Ecco alcune cose che potrebbero essere utili se from PIL import Image funziona ma import _imaging non riesce. Se anche Image fallisce, vedere la Nota alla fine.

Su Ubuntu 13.04 (raro), ho avuto questo problema. Risulta che Ubuntu installa _imaging.so in un posto che App Engine non si aspetta: /usr/lib/python2.7/dist-packages anziché /usr/lib/python2.7/dist-packages/PIL. Quindi _imaging.so non era da nessuna parte in sys.path.

Qui ci sono un paio di modi per aggirare questo:

Mettere i moduli PIL C da qualche parte già presenti sul percorso:

ho notato che /path/to/google_appengine/lib/PIL-1.1.7 era in sys.path, ma la directory non esisteva nella mia installazione . Così ho creato la directory e copiato i file .so e tutto ha funzionato. Si dovrebbe fare di nuovo questo, ogni volta che hai aggiornato l'App Engine SDK, ma almeno non lo fa confusione con il codice che si sta sviluppando.

Manipolare sys.path in main.py:

Questo codice controlla se stiamo correndo l'appserver dev, e in caso affermativo, aggiungere il dir corretta al percorso. Non testato ma dovrebbe funzionare;)

# Find _imaging.so and put its directory here. 
# `locate _imaging.so` or `dpkg -L python-imaging` 
PIL_PATH = '/usr/lib/pyshared/python2.7/' 

PRODUCTION_MODE = not os.environ.get(
    'SERVER_SOFTWARE', 'Development').startswith('Development') 

if not PRODUCTION_MODE: 
    sys.path.insert(PIL_PATH) 

suppongo che questo potrebbe rendere più che i moduli Pil disponibili a voi, in modo che sarebbe introdurre (ancora di più) le differenze tra lo sviluppo e la produzione. Inoltre, questa tecnica comporta la modifica del codice sorgente della tua app, che sembra una brutta chiamata se c'è più di una persona che la sviluppa.


Nota: se import Image fallisce, si potrebbe aver dimenticato di aggiungere la libreria PIL al app.yaml.

libraries: 
- name: PIL 
    version: "latest" 

Potrebbe essere necessario riavviare il dev_appserver.py dopo l'aggiunta di questa libreria affinché le modifiche rifletteranno nel esempio la console interattiva.

-1

Su Ubuntu, il seguente comando mi ha aiutato (grazie a this answer on askubuntu):

sudo apt-get install libjpeg62:i386 
0

motivo per cui esiste il problema, è con PIL 1.1.6? (solo 1.1.7), La versione 1.1.6 non utilizza queste librerie?

PIL 1.1.6 utilizza anche la sua biblioteca interna C per accelerare le cose.

Per Windows si consiglia di utilizzare i pacchetti precompilati. http://www.pythonware.com/products/pil/ offre binari X86 di Windows per 1.1.7. Potresti incontrare un problema con 1.1.7 binari di Windows. La libreria C freetype fa riferimento a un CRT di debug che non è disponibile su tutte le macchine . Puoi facilmente applicare patch al file _imagingft.pyd con un editor esadecimale.

+0

Potrebbe aiutare in dettaglio come risolvere il riferimento CRT nel file di _imagingft.pyd con editor esadecimale? Grazie – egesuato

+0

Scopri le soluzioni qui e vedere se aiuta https://bitbucket.org/effbot/pil-117/issues/1/windows-build-of-_imagingft-module-fails. Si prega di esaminarli attentamente e fare i backup prima di provare le soluzioni – Transformer

0

mi mancava completamente i file nella cartella _imaging.*lib/site-packages/PIL.

ho scaricato l'uovo da qui (il file corretto dipende dalla piattaforma):

https://pypi.python.org/pypi/Pillow/2.7.0

rinominato da .egg a .zip and copied all the files in the folder PIL that start with _imaging to the folder lib/site-packages/PIL` .

.. Problema risolto

Problemi correlati