In the newest version of pillow, the attribute PILLOW_VERSION is removed in favor of PIL.__version__. torchvision relies on the old behaviour and breaks on import with
>>> import torchvision
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "./venv/lib/python3.7/site-packages/torchvision/__init__.py", line 4, in <module>
from torchvision import datasets
File "./venv/lib/python3.7/site-packages/torchvision/datasets/__init__.py", line 9, in <module>
from .fakedata import FakeData
File "./venv/lib/python3.7/site-packages/torchvision/datasets/fakedata.py", line 3, in <module>
from .. import transforms
File "./venv/lib/python3.7/site-packages/torchvision/transforms/__init__.py", line 1, in <module>
from .transforms import *
File "./venv/lib/python3.7/site-packages/torchvision/transforms/transforms.py", line 17, in <module>
from . import functional as F
File "./venv/lib/python3.7/site-packages/torchvision/transforms/functional.py", line 5, in <module>
from PIL import Image, ImageOps, ImageEnhance, PILLOW_VERSION
ImportError: cannot import name 'PILLOW_VERSION' from 'PIL' (./venv/lib/python3.7/site-packages/PIL/__init__.py)
See for reference this issue in Pillow https://github.com/python-pillow/Pillow/issues/4130.
I don't know if version 7 of Pillow breaks torchvision in other ways. Instead of resolving this directly, the <7.0 dependency rule could also be added to the requirements of torchvision.
Thanks for opening the issue!
This is a duplicate of https://github.com/pytorch/vision/issues/1712, and has been fixed in torchvision master already. We will be releasing a new version of torchvision early next week, which contains the fix.
what is the minimum version of pytorch and torchvision for this error to stop?
1712
What is the solution for this issue?
I have pytorch 1.4.0 and it seems to still be a problem:
(automl) brandBrandoParetoopareto~/automl-meta-learning/automl/experiments $ conda list
# packages in environment at /Users/brandBrandoParetoopareto/anaconda3/envs/automl:
#
# Name Version Build Channel
absl-py 0.9.0 py37_0
asn1crypto 1.3.0 py37_0
astroid 2.3.3 py37_0
beautifulsoup4 4.8.2 py37_0
blas 1.0 mkl
bzip2 1.0.8 h1de35cc_0
c-ares 1.15.0 h1de35cc_1001
ca-certificates 2020.1.1 0
certifi 2019.11.28 py37_1
cffi 1.14.0 py37hb5b8e2f_0
chardet 3.0.4 py37_1003
conda 4.8.3 py37_0
conda-build 3.18.11 py37_0
conda-package-handling 1.6.0 py37h1de35cc_0
cryptography 2.8 py37ha12b0ac_0
filelock 3.0.12 py_0
freetype 2.9.1 hb4e5f40_0
glob2 0.7 py_0
grpcio 1.16.1 py37h044775b_1
idna 2.9 py_1
intel-openmp 2019.4 233
isort 4.3.21 py37_0
jinja2 2.11.1 py_0
jpeg 9b he5867d9_2
lazy-object-proxy 1.4.3 py37h1de35cc_0
libarchive 3.3.3 h786848e_5
libcxx 4.0.1 hcfea43d_1
libcxxabi 4.0.1 hcfea43d_1
libedit 3.1.20181209 hb402a30_0
libffi 3.2.1 h475c297_4
libgfortran 3.0.1 h93005f0_2
libiconv 1.15 hdd342a3_7
liblief 0.9.0 h2a1bed3_2
libpng 1.6.37 ha441bb4_0
libprotobuf 3.11.4 hd9629dc_0
libtiff 4.1.0 hcb84e12_0
libxml2 2.9.9 hf6e021a_1
lz4-c 1.8.1.2 h1de35cc_0
lzo 2.10 h362108e_2
markdown 3.1.1 py37_0
markupsafe 1.1.1 py37h1de35cc_0
mccabe 0.6.1 py37_1
mkl 2019.4 233
mkl-service 2.3.0 py37hfbe908c_0
mkl_fft 1.0.15 py37h5e564d8_0
mkl_random 1.1.0 py37ha771720_0
ncurses 6.2 h0a44026_0
ninja 1.9.0 py37h04f5b5a_0
numpy 1.18.1 py37h7241aed_0
numpy-base 1.18.1 py37h6575580_1
olefile 0.46 py37_0
openssl 1.1.1e h1de35cc_0
pillow 7.0.0 py37h4655f20_0
pip 20.0.2 py37_1
pkginfo 1.5.0.1 py37_0
protobuf 3.11.4 py37h0a44026_0
psutil 5.7.0 py37h1de35cc_0
py-lief 0.9.0 py37h1413db1_2
pycosat 0.6.3 py37h1de35cc_0
pycparser 2.20 py_0
pylint 2.4.4 py37_0
pyopenssl 19.1.0 py37_0
pysocks 1.7.1 py37_0
python 3.7.7 hc70fcce_0_cpython
python-libarchive-c 2.8 py37_13
pytorch 1.4.0 py3.7_0 pytorch
pytz 2019.3 py_0
pyyaml 5.3.1 py37h1de35cc_0
readline 8.0 h1de35cc_0
requests 2.23.0 py37_0
ripgrep 11.0.2 he32d670_0
ruamel_yaml 0.15.87 py37h1de35cc_0
setuptools 46.1.1 py37_0
six 1.14.0 py37_0
soupsieve 2.0 py_0
sqlite 3.31.1 ha441bb4_0
tensorboard 2.0.0 pyhb38c66f_1
tk 8.6.8 ha441bb4_0
torchvision 0.2.1 py_2 soumith
tqdm 4.43.0 py_0
urllib3 1.25.8 py37_0
werkzeug 1.0.0 py_0
wheel 0.34.2 py37_0
wrapt 1.12.1 py37h1de35cc_1
xz 5.2.4 h1de35cc_4
yaml 0.1.7 hc338f04_2
zlib 1.2.11 h1de35cc_3
zstd 1.3.7 h5bba6e5_0
seems this temp soln works:
conda install pillow=6.2.1 -y
This issue is fixed with PyTorch and TorchVision nightlies. A new stable release of both libraries will be released next week.
Note that the release 0.5.0 didn't contain the fix
I am obtaining torchvision using the docker image nvcr.io/nvidia/pytorch:19.11-py3. Is there a docker image that incorporates the change above?
@free-soellingeraj I don't know. I don't think we provide docker images with our libraries.
cc @seemethere