web-dev-qa-db-fra.com

AttributeError: le module 'PIL.Image' n'a pas d'attribut 'register_extensions'

Je courais leçon 1 de fast.ai dans google-colab. Quand je suis arrivé à la ligne

img = plt.imread(f'{PATH}valid/cats/{files[0]}')

plt.imshow(img);

Il n'a pas montré d'image. Au lieu de cela, j'ai eu une erreur:

 AttributeError: le module 'PIL.Image' n'a pas d'attribut 'register_extensions' 

Qu'est-ce qui peut causer cela?

21

J'étais sur Google Colab lorsque j'ai rencontré ce problème.

Après le code pour installer torch, ajoutez:

!pip install pillow==4.1.1
%reload_ext autoreload
%autoreload

Le %autoreload rechargera tous les modules afin qu'aucun redémarrage du noyau ne soit requis.

Le crédit va à cet article du forum .

10
Tom Hale

Ce qui a fonctionné pour moi après le chargement du module pillow et de toutes les autres configurations fastai est la suivante:

# workaround 
from PIL import Image
def register_extension(id, extension): Image.EXTENSION[extension.lower()] = id.upper()
Image.register_extension = register_extension
def register_extensions(id, extensions): 
  for extension in extensions: register_extension(id, extension)
Image.register_extensions = register_extensions

et aucun redémarrage à l'exécution n'est maintenant requis.

7
stason

Pour moi, le redémarrage de l'exécution à l'aide de l'option "Exécution/Redémarrage de l'exécution…" du menu après l'installation du nouvel oreiller à l'aide de pip et l'exécution du code qui l'utilise corrigeait le problème.

7
Mohamed Jihad

lancez ces 3 lignes au début de votre cahier colab

!pip install Pillow==4.0.0
!pip install PIL
!pip install image

J'étais également aux prises avec le même problème. Mais cela a fonctionné pour moi. https://pillow.readthedocs.io/en/3.1.x/reference/Image.html

4
van neilsen

Votre version de Pillow installée n'est pas à jour. Exécutez ce qui suit:

import PIL
print(PIL.PILLOW_VERSION)

Ce sera probablement 4.0.0. Si tel est le cas, exécutez les commandes suivantes:

!pip uninstall Pillow
!pip install Pillow==5.3.0

Puis redémarrez votre runtime (appuyez sur CTRL + M ., ou Runtime --> Restart runtime du menu). Exécutez à nouveau le premier jeu de commandes pour vous assurer que votre version actuelle de PIL est 5.3.0.

3
Sia

La prochaine fois que vous démarrez votre machine virtuelle colab, veillez à commenter les deux lignes suivantes (c.-à-d. Ne les exécutez pas).

#%reload_ext autoreload        <------------— comment out 
#%autoreload 0                 <------------— comment out
%matplotlib inline

Juste pour être sûr, j'ai également réinstallé mon PIL

!pip install --no-cache-dir -I pillow
2
Marzieh Heidari

Cela a fonctionné pour moi après avoir ajouté ce qui suit après toute la configuration:

from PIL import Image

def register_extension(id, extension): Image.EXTENSION[extension.lower()] = id.upper()
Image.register_extension = register_extension
def register_extensions(id, extensions): 
  for extension in extensions: register_extension(id, extension)
Image.register_extensions = register_extensions

puis modifié la fonction suivante dans la section Analyzing Results: Looking At Pictures

def load_img_id(ds, idx): return np.array(PIL.Image.open(PATH+ds.fnames[idx]))

à

def load_img_id(ds, idx): return np.array(Image.open(PATH+ds.fnames[idx]))
1
anshukira

Probablement le format du fichier. Je l'ai changé de ".tiff" à ".png". Ça marche. Le module n'a pas de décodeur tiff.

0
Jerry