2014-09-04 12 views
7

Sto entrando in un progetto, quindi voglio impostare l'Environnment, quindi quello che ho fatto è:pitone/django - "Non è possibile utilizzare ImageField perché cuscino non è installato"

pip install -r requirements.txt 

Questo completamente installato tutto requisiti compresi django 1.7.0, Pillow 2.4.0 e alcuni altri.

Poi voglio costruire il database:

python manage.py migrate 

e boom, errore, ottengo il seguente:

CommandError: System check identified some issues: 

ERRORS: 
stu.chan.icon: (fields.E210) Cannot use ImageField because Pillow is not installed. 
    HINT: Get Pillow at https://pypi.python.org/pypi/Pillow or run command "pip install pillow". 
stu.chan.image: (fields.E210) Cannot use ImageField because Pillow is not installed. 
    HINT: Get Pillow at https://pypi.python.org/pypi/Pillow or run command "pip install pillow". 
stu.Piec.icon: (fields.E210) Cannot use ImageField because Pillow is not installed. 
    HINT: Get Pillow at https://pypi.python.org/pypi/Pillow or run command "pip install pillow". 

... come non ho installato cuscino. Quindi ho controllato il pacchetto installato (con la tecnica this) e installato Pillow 2.4.0.

Poi, ho anche provato a forzare reinstallazione: pip install --upgrade --force-reinstall Pillow==2.4.0

Ma, niente da fare ottengo lo stesso errore durante l'esecuzione migrate.

sto usando python 3.4.0 e django 1.7.0 su Mac OS X 10.6.7 avvolto in virtualenv 1.11.6 con pip declassato a pip 1.2.1 (a causa di alcuni ben noti-ma-non-completamente risolta-nor-capito issue con pip e SSL).

Tutto il codice sopra è in virtualenv (bin/activate completato).

Avete qualche idea sul perché questo problema e su come risolverlo?

- - - - - - EDIT - - - - - -

Quando eseguo il comando sopra forza-reinstallare, (tanti codice viene outpouted non posso incollarlo tutti, ma) anche se finiture con "Pillow installato con successo", ci sono alcune avvertenze nel codice:

building 'PIL._imaging' extension 
(blabla code) 
    _imaging.c:975:13: warning: array index of '1' indexes past the end of an array (that contains 1 elements) [-Warray-bounds] 
     value = PyTuple_GET_ITEM(xy, 1); 
       ^~~~~~~~~~~~~~~~~~~~~~~ 
    /usr/local/include/python3.4m/tupleobject.h:58:34: note: instantiated from: 
    #define PyTuple_GET_ITEM(op, i) (((PyTupleObject *)(op))->ob_item[i]) 
            ^
    /usr/local/include/python3.4m/tupleobject.h:27:5: note: array 'ob_item' declared here 
     PyObject *ob_item[1]; 
     ^
    1 warning generated. 

(blabla code) 
    libImaging/Unpack.c:867:1: warning: unused function 'copy3' [-Wunused-function] 
    copy3(UINT8* out, const UINT8* in, int pixels) 
    ^
    1 warning generated. 
+0

si verifica un errore durante l'installazione del cuscino ..? –

+0

Ho aggiornato la domanda. Si prega di guardare le avvertenze durante l'installazione. – lapin

+0

usando 'sudo' nessun avviso? –

risposta

5

ho provato:

  • Reinstallare PIL globaly attraverso la compilazione "Imaging-1.1.7" usando s istruzioni ome here, ma non ha funzionato
  • Reinstallare cuscino ed è la dipendenza utilizzando globalmente that link, ma non ha funzionato
  • Reinstallare GCC4.2 utilizzando this link, ma non ha funzionato

ho finalmente ho capito che ero nel caso descritto nella meravigliosa risposta allo this post. In altre parole, eseguo un mac la cui CPU è in grado di 64 bit ma il cui firmware del kernel è impostato su 32 bit. Questo è un problema in quanto il progetto su cui sto lavorando è stato realizzato per 64 bit.

Come spiegato in that post, quando si installa python3 utilizzando un programma di installazione (DMG), esso annuserà se il kernel è impostato su 32 bit e installa di conseguenza la versione a 32 bit di python 3.Ma se hai appena scaricato il tarball dal sito web di pitone e installarlo con:

cd Python-3.4.1 
./configure 
make 
sudo make install 

Poi dovrebbe essere installato la versione a 64 bit di python3. Che si può verificare facendo:

file /usr/local/bin/python3 
/usr/local/bin/python3: Mach-O 64-bit executable x86_64 

Fatto questo, tutti i problemi sono scomparsi con PIL/cuscino nel virtualenv utilizzare questa versione a 64 bit di python3. Anche il downgrade del pip è diventato inutile.

1

avuto un problema simile, e la mia soluzione era molto più semplice:

confeziona Apparentemente PIL e cuscino non possono coesistere. Se si desidera utilizzare il cuscino, è necessario disinstallare PIL e installare il cuscino.

Se si utilizza Mac, è necessario installare anche alcune librerie utilizzando brew. Indicato di seguito è la sequenza di passi:

$pip uninstall PIL 
$brew install libtiff libjpeg webp little-cms2 
$pip install Pillow 

per verificare se il cuscino è installato e pronto per l'uso, aperto interprete Python e provare a importare i seguenti:

>>> from PIL import Image 

* Si noti che la libreria dice ancora PIL ma ora sta importando da Pillow invece di PIL.

Se si è in grado di importare con successo allora siete pronti per partire (con tutta probabilità non dovrete preoccupare di impostare PYTHONPATH o 32/installazioni a 64 bit)

Fonte: https://pillow.readthedocs.io/en/latest/installation.html

+0

Il commento 'per verificare se il cuscino è installato [...] 'da immagine di importazione PIL' è molto utile - nel mio caso restituisce informazioni di debug più dettagliate su un ImportError relativo a libjpeg. – ptim

0

Ho avuto questo errore usando il debugger di PyCharm. Dovevo andare su Impostazioni -> 'Project Interpreter' evidenziare 'Cuscino' e colpire la piccola freccia in alto a destra per aggiornarlo. Quindi l'errore è scomparso.

0

Anche io stavo ottenendo lo stesso problema durante l'implementazione di Image Upload utilizzando CLoudinary, ma ho trovato la risposta sopra, ma in qualche altro modo.

sudo pip uninstall PIL 

sudo pip uninstall Pillow 

sudo pip install Pillow 

Dopo che il mio problema è stato risolto!

Problemi correlati