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년 전 글이라서 지금까지 통용되는 내용인지는 모르겠다.
일반적으로 sub module이 필요하면 그것을 명시적으로 불러와야한다. 나는 지금까지 그런 경험을 한 적이 없는데, 내가 쓰는 모든 모듈들 (torch.nn, os.path
등)이 친절하게 불러와줬나보다.
만약 import PIL
만 했는데 오류가 안났다면, 다른 모듈을 import 하는 과정에서 해당 모듈이 import PIL.Image
같은걸 수행했기 때문이다. 대표적으로 import matplotlib
을 했다면 해당 모듈을 import 하는 과정에서 이미 Image를 불러왔기 때문에 오류가 발생하지 않는다.