[오류 노트] AttributeError: module 'PIL' has no attribute 'Image'

정준환·2023년 4월 18일
0

상황


pip3 install Pillow

를 통해 설치한 PIL 라이브러리를 사용하는 도중

import PIL

PIL.Image

하고 Image를 불러내니 오류가 났다. 분명히 PIL에는 Image가 있는데, 없다고 한다.
해결 방법이 stack overflow 에 잘 정리가 되어있다. 요약해보면 간단하다.

PIL의 __init__.py 에는 Image를 불러오는 코드가 없다. 그래서 내가 Image를 사용하고 싶다면, 직접 불러와야 한다.

해결 방법


import PIL

이 친구를

import PIL.Image
from PIL import Image

등 Image를 직접적으로 가져오도록 바꾸면 깔끔하게 해결된다.

더 알아보기


위의 stack overflow의 답변에서 더 참고할 만한 두가지가 있다. 10년 전 글이라서 지금까지 통용되는 내용인지는 모르겠다.

  1. 일반적으로 sub module이 필요하면 그것을 명시적으로 불러와야한다. 나는 지금까지 그런 경험을 한 적이 없는데, 내가 쓰는 모든 모듈들 (torch.nn, os.path 등)이 친절하게 불러와줬나보다.

  2. 만약 import PIL 만 했는데 오류가 안났다면, 다른 모듈을 import 하는 과정에서 해당 모듈이 import PIL.Image 같은걸 수행했기 때문이다. 대표적으로 import matplotlib을 했다면 해당 모듈을 import 하는 과정에서 이미 Image를 불러왔기 때문에 오류가 발생하지 않는다.

profile
정준환

0개의 댓글