25

我在 google-colab 中运行 fast.ai 的第 1 课。当我来到线

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

plt.imshow(img);

它没有显示图像。相反,我得到了一个错误:

AttributeError:模块“PIL.Image”没有属性“register_extensions”

这可能是什么原因造成的?

4

9 回答 9

13

遇到此问题时,我正在使用 Google Colab。

要安装的代码之后torch,添加:

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

它将重新加载所有模块,%autoreload因此不需要重新启动内核。

归功于此论坛帖子

于 2018-11-27T09:47:27.670 回答
9

对我来说,在使用 pip 安装较新的 Pillow 并运行使用它的代码后,使用菜单中的“Runtime / Restart runtime…”重新启动运行时解决了这个问题。

于 2018-02-13T19:55:55.800 回答
8

pillow加载模块和所有其他 fastai 设置后对我有用的是:

# 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

现在不需要运行时重新启动。

于 2018-05-08T07:54:45.720 回答
5

在 colab 笔记本的开头运行这 3 行

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

我也在为同样的问题而苦苦挣扎。但这对我有用。 https://pillow.readthedocs.io/en/3.1.x/reference/Image.html

于 2018-12-02T10:54:37.180 回答
5

您安装的 Pillow 版本不是最新的。运行以下命令:

import PIL
print(PIL.PILLOW_VERSION)

可能会4.0.0。如果是这样,请运行以下命令:

!pip uninstall Pillow
!pip install Pillow==5.3.0

然后重新启动您的运行时(按CTRL + M .,或Runtime --> Restart runtime从菜单中)。再次运行第一组命令以确保您当前的 PIL 版本为 5.3.0。

于 2018-12-16T05:53:47.833 回答
2

下一次,你启动你的colab VM,一定要注释掉下面两行(即不要运行它们)

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

为了安全起见,我还重新安装了我的 PIL

!pip install --no-cache-dir -I pillow
于 2018-02-02T09:05:13.483 回答
1

在完成所有设置后添加以下内容后,它对我有用:

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

然后在节中更改了以下功能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]))
于 2018-10-05T10:59:32.717 回答
0

可能是文件的格式。我将它从“.tiff”更改为“.png”。有用。该模块没有 tiff 解码器。

于 2018-03-23T00:37:34.790 回答
0

跑步

python -m pip install --upgrade Pillow
python3 -m pip install --upgrade Pillow

并重新启动 python/重新导入模块为我解决了这个问题。

于 2020-06-12T23:37:13.617 回答