python / django - " impossible D'utiliser ImageField car Pillow n'est pas installé"
je me joins à un projet, donc je veux mettre en place l'environnement, donc ce que j'ai fait est:
pip install -r requirements.txt
ceci entièrement installé toutes les exigences, y compris django 1.7.0, Pillow 2.4.0 et quelques autres.
alors je veux construire la base de données:
python manage.py migrate
et boom, erreur, je reçois le suivant :
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".
... comme si je n'avais pas installé de coussin.
Donc j'ai vérifié le paquet installé (avec cette" technique ), et Pillow 2.4.0
est installé.
ensuite, j'ai aussi essayé de forcer la réinstallation: pip install --upgrade --force-reinstall Pillow==2.4.0
mais, rien à faire j'obtiens la même erreur en lançant migrate
.
j'utilise python 3.4.0
et django 1.7.0
sur un mac OS X 10.6.7 enveloppé dans virtualenv 1.11.6
avec PEP déclassé à pip 1.2.1
(en raison de certains bien connu-encore-pas-entièrement résolu-ni-compris numéro avec PEP et ssl).
tout le code ci-dessus est dans virtualenv ( bin/activate
fait).
avez-vous une idée de pourquoi ce problème et comment le résoudre?
- - - - - - MODIFIER - - - - - -
quand j'exécute la commande de force-réinstaller ci-dessus, (tant de code est sorti que je ne peux pas tout coller mais) bien qu'il se termine par " installé avec succès Pillow", il y a quelques avertissements dans le code:
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.
7 réponses
j'avais ce problème sur un Mac avec Python 3.6.4. La solution était de désinstaller Pillow 5.1.0 et d'installer 5.0.0.
pip uninstall Pillow
pip install Pillow==5.0.0
j'ai essayé:
- réinstaller globaly PIL en compilant "Imaging-1.1.7" en utilisant quelques instructions ici , mais n'a pas fonctionné
- réinstaller L'oreiller et sa dépendance globalement en utilisant ce lien , mais n'a pas fonctionné
- réinstaller GCC4.2 en utilisant ce lien , mais il n'a pas fonctionné
j'ai finalement compris que j'étais dans le cas décrit dans la réponse merveilleuse à ce post . En d'autres termes, j'exécute un mac dont le CPU est capable de 64bit mais dont le firmware du noyau est réglé à 32bit. Ce qui est un problème car le projet sur lequel je travaille a été construit pour 64bit.
comme expliqué dans que post , lorsque vous installez python3 en utilisant un installateur (DMG), il reniflera si le noyau est réglé à 32 bits et installera la version 32bit de python 3 en conséquence. Mais si il vous suffit de télécharger la source tarball à partir du site Web de python et de l'installer avec:
cd Python-3.4.1
./configure
make
sudo make install
alors la version 64bit de python3 devrait être installée. Que vous pouvez vérifier en faisant:
file /usr/local/bin/python3
/usr/local/bin/python3: Mach-O 64-bit executable x86_64
Cela fait, tous les problèmes sont partis avec PIL/Pillow dans le virtualenv en utilisant cette version 64bit de python3. Même le déclassement du pip est devenu inutile.
j'ai eu cette erreur en utilisant le débogueur de PyCharm. J'ai dû aller sur Paramètres->'Project Interpreter' mettre en surbrillance 'Pillow' et appuyer sur la petite flèche vers le haut à droite pour la mettre à jour. Ensuite, l'erreur a disparu.
j'étais trop obtenir le même problème tout en implémentant le téléchargement D'Image en utilisant CLoudinary , mais trouvé la réponse ci-dessus, mais d'une autre manière.
sudo pip uninstall PIL
sudo pip uninstall Pillow
sudo pip install Pillow
après que le problème de mine a été résolu !
avait un problème similaire, et ma solution était beaucoup plus simple:
apparemment, les paquets PIL et Pillow ne peuvent pas coexister. si vous voulez utiliser Pillow vous devez d'abord désinstaller PIL et ensuite installer Pillow .
si vous êtes sur Mac, vous devez installer quelques bibliothèques en utilisant brew. La séquence des étapes est mentionnée ci-dessous:
$pip uninstall PIL
$brew install libtiff libjpeg webp little-cms2
$pip install Pillow
pour vérifier si le coussin est installé et prêt à l'emploi, Ouvrir Python interprète et essayer d'importer ce qui suit:
>>> from PIL import Image
*notez que la bibliothèque dit toujours PIL mais maintenant elle importe de Pillow au lieu de PIL.
si vous êtes en mesure d'importer avec succès alors vous êtes bon à aller (selon toute probabilité vous n'aurez pas à vous soucier de définir PYTHONPATH ou 32/64-bit installations)
Source: https://pillow.readthedocs.io/en/latest/installation.html
pour python3 assurez-vous que votre $PYTHONPATH
a le chemin virtualenv
et
Au lieu d'exécuter la commande
python manage.py migrate
Run:
python3 manage.py migrate
macOS High Sierra 10.13.6 Ma solution était
pip3 install Pillow
Pas
pip install Pillow