web-dev-qa-db-fra.com

PIL: ImportError: l'extension _imaging a été construite pour une autre version de pillow ou PIL

Je reçois l'erreur:

---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
<ipython-input-4-0f6709e38f49> in <module>()
----> 1 from PIL import Image

C:\Anaconda\lib\site-packages\PIL\Image.py in <module>()
     61     from PIL import _imaging as core
     62     if PILLOW_VERSION != getattr(core, 'PILLOW_VERSION', None):
---> 63         raise ImportError("The _imaging extension was built for another "
     64                           " version of Pillow or PIL")
     65 

ImportError: The _imaging extension was built for another  version of Pillow or PIL

Chaque fois que j'essaie d'utiliser la bibliothèque PIL. J'essaie de charger et de travailler sur un tas de fichiers .gif, et ce que j'essaie maintenant, est le suivant:

from PIL import Image

Essayer une approche différente, à travers scipy avec:

import scipy.ndimage as spnd
os.chdir('C:\\WeatherSink\\data\\')
spnd.imread('2014-11-03-0645.gif')

Échoue avec:

---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
<ipython-input-3-23c383b79646> in <module>()
      1 os.chdir('C:\\WeatherSink\\data\\')
----> 2 spnd.imread('2014-11-03-0645.gif')

C:\Anaconda\lib\site-packages\scipy\ndimage\io.pyc in imread(fname, flatten, mode)
     36         from PIL import Image
     37     except ImportError:
---> 38         raise ImportError("Could not import the Python Imaging Library (PIL)"
     39                           " required to load image files.  Please refer to"
     40                           " http://pypi.python.org/pypi/PIL/ for installation"

ImportError: Could not import the Python Imaging Library (PIL) required to load image files.  Please refer to http://pypi.python.org/pypi/PIL/ for installation instructions.

La première approche me guide vers les versions de PIL installées. J'essaie d'émuler le getattr (...), et cela ne renvoie aucun. Je ne suis donc pas surpris que ce soit moins que de fonctionner. Mais quelqu'un sait-il comment "corriger" les erreurs?

Je cours sur win7, en gérant python2.7 via conda. J'ai également essayé de supprimer et de réinstaller les packages, sans aucun changement dans la sortie.

L'aide est très appréciée.

18
C.Buhl

Ce n'est qu'un problème d'installation.

Installez d'abord pip sur votre système s'il n'est pas installé. C'est également disponible pour Windows .

Améliorez votre numpy, pip/oreiller, scipy:

pip install -U numpy
pip install -U pil/pillow
pip install -U scipy

La meilleure option pour Windows est d'utiliser anaconda .

Je pense que pip est déjà installé dans conda. Cela résoudra le problème de la version de votre système.

In [1]: from PIL import Image

In [2]: import scipy.ndimage as spnd

In [3]: x = spnd.imread('ppuf100X91.gif')

In [4]: print x
[[255 255 255 ..., 255 255 255]
 [255 255 255 ..., 255 255 255]
 [255 255 255 ..., 255 255 255]
 ..., 
 [255 255 255 ..., 255 255 255]
 [255 255 255 ..., 255 255 255]
 [255 255 255 ..., 255 255 255]]
19
aibotnet

Il s'agit d'un problème dans python 3.6 Modifier le fichier: C:\Anaconda\lib\site-packages\PIL\Image.py et changez le code:

if PILLOW_VERSION != getattr(core, 'PILLOW_VERSION', None):
     raise ImportError("The _imaging extension was built for another "
                        " version of Pillow or PIL")

changer cela en:

if core.PILLOW_VERSION != getattr(core, 'PILLOW_VERSION', None):
     raise ImportError("The _imaging extension was built for another "
                        " version of Pillow or PIL")

Cela résoudra le problème. Cordialement

9
ibrahim

Ce problème est dû à Python de PIL/oreiller est une version Up ou Down de votre système et à cause de cette question est généré dans votre système.

Essayez de vérifier cette commande:

Sudo apt-get install python-PIL

Vérifiez que ce package est installé ou non. S'il est installé, essayez de le supprimer avec la commande:

Sudo apt-get remove python-PIL

Vérifiez que cela fonctionnera pour supprimer le paquet PIL/oreiller est supprimé de votre système.

Et enfin, cette commande vous aidera à résoudre ce problème de package:

Sudo apt-get autoremove python-PIL

Réinstallez ensuite le package PIL/Pillow:

Sudo apt-get install python-pil

Cela devrait vous aider à résoudre le problème.

3

Peut-être que l'une de vos dépendances nécessite PIL et que PIL finit par être installé après Pillow, provoquant des conflits dans le répertoire des packages de votre site. Je suppose que vous voyez cette erreur car l'instruction d'importation importe _imaging à partir d'une installation PIL légitime et non d'une installation Pillow.

J'ai eu des problèmes dans le passé avec des packages en conflit qui nécessitent PIL ou Pillow. L'oreiller est, bien sûr, l'emballage préféré. Je voudrais jeter un oeil aux dépendances de vos packages. Si vous pouvez en trouver un qui dépend de PIL, je soumettrais une demande d'extraction qui change la dépendance en Pillow ou peut-être même crée votre propre fork avec ce changement. Pour ma situation, bifurquer était l'option sur laquelle je me suis installé car le projet ne semblait plus avoir d'activité depuis longtemps.

En fin de compte, vous souhaitez éliminer toutes les dépendances sur le package PIL (car il n'est plus actif) au profit de Pillow.

3
David Sanders