Deep Learning에서 Hello World인 MNIST를 학습하기 위해 torchvision package에서 datasets, transforms를 import하면 다음과 같은 에러가 발생하여 해결책을 공유합니다.
Code 및 Error Message
from torchvision import datasets, transforms |
from PIL import Image, ImageOps, ImageEnhance, PILLOW_VERSION
from PIL import PILLOW_VERSION
ImportError: cannot import name 'PILLOW_VERSION' from 'PIL' (C:\Users\admin\Anaconda3\envs\pytorch\lib\site-packages\PIL\__init__.py)
PILLOW_VERSION 를 직접 import해도 같은 에러가 발생했습니다.
from PIL import PILLOW_VERSION |
from PIL import PILLOW_VERSION
ImportError: cannot import name 'PILLOW_VERSION' from 'PIL' (C:\Users\ynebu\Anaconda3\envs\pytorch\lib\site-packages\PIL\__init__.py)
Error Caused
Pillow 버젼 문제로 생각되어 업그래이드를 진행했으나 전 이미 최신 버젼이 설치된 상태였습니다.pip install --upgrade Pillow Requirement already up-to-date: Pillow in c:\users\ynebu\anaconda3\envs\pytorch\lib\site-packages (7.0.0) |
그래서 __init__.py 파일을 확인해 보니 PILLOW_VERSION은 7.0.0 버젼부터 삭제된걸 확인했습니다. 대신 __version__를 사용하라고 가이드 되어있습니다.
C:\Users\admin\Anaconda3\envs\pytorch\Lib\site-packages\PIL\__init__.py
# VERSION was removed in Pillow 6.0.0. # PILLOW_VERSION was removed in Pillow 7.0.0. # Use __version__ instead. __version__ = _version.__version__ |
Error Solution
https://github.com/pytorch/vision/issues/1712위 git은 지금 저희가 겪는 문제에 대해서 논하는 글 입니다.
"New Pillow version (7.0.0) breaks torchvision (ImportError: cannot import name 'PILLOW_VERSION' from 'PIL')"
9일전(2020년 1월2일) 포스팅 되었고, 답글을 보면 차주에 새 버젼이 나온다고 했는데 아직 반영 전인거 같네요
해결 방법은 두 개가 있다고 생각됩니다.
첫 번째 방법은 제가 확인은 하지않았지만 위 git에서 많은 사람들이 가이드한 내용입니다. Pillow version을 6점대로 내리면 됩니다. 그럼 PILLOW_VERSION 변수명을 참조할 수 있어 에러가 발생 안합니다.
conda install -c conda-forge pillow"<7.0.0" |
두 번째 해결책은 제가 적용하고 git comment로 추가한 내용입니다. torchvision에서 Pillow를 참조하는 부분을 수정하는 방법입니다.
대상파일인 functional.py을 열고, PILLOW_VERSION을 지우고 __version__으로 변경하시면 됩니다.
C:\Users\admin\Anaconda3\envs\pytorch\Lib\site-packages\torchvision\transforms\functional.py
#from PIL import Image, ImageOps, ImageEnhance, PILLOW_VERSION from PIL import Image, ImageOps, ImageEnhance, version |
감사합니다.
댓글
댓글 쓰기