2012-07-27 15 views
6

Sono in esecuzione Django 1.4 e PIL 1.1.7 in un virtualenv gestito con pip. Ogni volta che caricare un file JPEG tramite il mio interfaccia di amministrazione, ottengo il seguente errore: Upload a valid image. The file you uploaded was either not an image or a corrupted image.Come riconoscere Django Supporto JPEG PIL

Come molti utenti di Ubuntu hanno segnalato, al momento dell'installazione, PIL erronously guardò /usr/lib/ per libjpeg, mentre la sua vera posizione era in /usr/lib/i386-linux-gnu/. Questo è curato; Ho seguito le risposte in questi posti:

Django ImageField "Upload a valid image. The file you uploaded was either not an image or a corrupted image."

Why can't I upload jpg files to my Django app via admin/?

Ora il risultato finale di installazione si presenta come segue:


PIL 1.1.7 SETUP SUMMARY 
-------------------------------------------------------------------- 
version  1.1.7 
platform  linux2 2.7.3 (default, Apr 20 2012, 22:44:07) 
       [GCC 4.6.3] 
-------------------------------------------------------------------- 
--- TKINTER support available 
--- JPEG support available 
--- ZLIB (PNG/ZIP) support available 
--- FREETYPE2 support available 
*** LITTLECMS support not available 
-------------------------------------------------------------------- 
To add a missing option, make sure you have the required 
library, and set the corresponding ROOT variable in the 
setup.py script. 

To check the build, run the selftest.py script. 
changing mode of build/scripts-2.7/pilfile.py from 644 to 755 
changing mode of build/scripts-2.7/pilfont.py from 644 to 755 
changing mode of build/scripts-2.7/pilconvert.py from 644 to 755 
changing mode of build/scripts-2.7/pilprint.py from 644 to 755 
changing mode of build/scripts-2.7/pildriver.py from 644 to 755 

changing mode of /usr/local/bin/pilfile.py to 755 
changing mode of /usr/local/bin/pilfont.py to 755 
changing mode of /usr/local/bin/pilconvert.py to 755 
changing mode of /usr/local/bin/pilprint.py to 755 
changing mode of /usr/local/bin/pildriver.py to 755 
Successfully installed PIL 

Tuttavia, Django ancora non ha Mi permettono di caricare qualsiasi cosa tranne i file BMP, il che non è accettabile per questo progetto. A differenza dell'utente nel secondo link, non sto usando Apache, quindi il mio problema probabilmente non è correlato. Il mio sospetto è che Django usi ancora una vecchia installazione di PIL. Il problema è che non so da dove potrebbe provenire. I file in ~/.virtualenvs/project/local/lib/python2.7/site-packages mi sembrano aggiornati. Qualche idea?

EDIT 1: Si noti inoltre che ho provato a scollegarsi ed effettuare un nuovo accesso in amministrazione, così come l'installazione di pillow, come in questo post: Uploading a JPEG image via Django displays error

+0

Hai provato a installare [Cuscino] (http://pypi.python.org/pypi/Pillow) invece di PIL? Controlla il tuo sys.path – jterrace

+0

Potresti caricare il tuo modello? – nicowernli

+0

@jterrace: Sì. E quell'installazione mi ha anche detto che il supporto JPEG era disponibile. – novembrine

risposta

2

Si scopre che tutta questa faccenda è colpa mia a causa di un fraintendimento di come funziona pip. Per abitudine, associo tutte le installazioni con privilegi di superutente, che non solo non era necessario in questo caso, ma una ricetta per la confusione.

La prima volta che ho installato PIL, non l'ho preceduto con sudo, ma l'ho fatto ogni volta dopo. Così, costruendo dal consiglio di Meitham, ho controllato per vedere da dove provenisse l'importazione. Veniva dal posto giusto, ma non aveva le estensioni che desideravo, nonostante l'output post-installazione che dicevo di averlo fatto. Per farla breve, ho rimosso la directory dai pacchetti del mio sito, quindi il numero pip freeze ha continuato a dirmi che non avevo PIL ma mi ha detto che l'ho fatto io, sudo pip install.

Lezione appresa: virtualenv si basa nella directory dell'utente, sui privilegi dell'utente. Pensaci due volte prima di combinare sudo e pip nello stesso comando.

Problemi correlati