Torchvision not using pillow-simd when its installed

dependencies = [
“numpy<2; sys_platform==‘win32’”,
“numpy; sys_platform==‘linux’”,
“pillow-simd”,
“python-magic-bin==0.4.14; sys_platform==‘win32’”,
“python-magic; sys_platform==‘linux’”,
“pyyaml”,
“scikit-learn”,
“tensorboard”,
“torch==2.0.0”,
“torchvision==0.15.1”,
“torch-tb-profiler”,
“tqdm”,
“typer”,
“watchdog”,
“matplotlib”

Successfully installed MarkupSafe-2.1.5 absl-py-2.1.0 certifi-2024.7.4 charset-normalizer-3.3.2 click-8.1.7 cmake-3.30.1 contourpy-1.2.1 cycler-0.12.1 filelock-3.15.4 fonttools-4.53.1 grpcio-1.65.1 idna-3.7 importlib-metadata-8.2.0 importlib-resources-6.4.0 jinja2-3.1.4 joblib-1.4.2 kiwisolver-1.4.5 lit-18.1.8 markdown-3.6 markdown-it-py-3.0.0 matplotlib-3.9.1 mdurl-0.1.2 mpmath-1.3.0 networkx-3.2.1 numpy-1.26.4 nvidia-cublas-cu11-11.10.3.66 nvidia-cuda-cupti-cu11-11.7.101 nvidia-cuda-nvrtc-cu11-11.7.99 nvidia-cuda-runtime-cu11-11.7.99 nvidia-cudnn-cu11-8.5.0.96 nvidia-cufft-cu11-10.9.0.58 nvidia-curand-cu11-10.2.10.91 nvidia-cusolver-cu11-11.4.0.1 nvidia-cusparse-cu11-11.7.4.91 nvidia-nccl-cu11-2.14.3 nvidia-nvtx-cu11-11.7.91 packaging-24.1 pandas-2.2.2 pillow-10.4.0 pillow-simd-9.0.0.post1 protobuf-4.25.4 pygments-2.18.0 pyparsing-3.1.2 python-dateutil-2.9.0.post0 python-magic-0.4.27 pytz-2024.1 pyyaml-6.0.1 requests-2.32.3 rich-13.7.1 scikit-learn-1.5.1 scipy-1.13.1 shellingham-1.5.4 six-1.16.0 spidops-0.1.0 sympy-1.13.1 tensorboard-2.17.0 tensorboard-data-server-0.7.2 threadpoolctl-3.5.0 torch-2.0.0 torch-tb-profiler-0.4.3 torchvision-0.15.1 tqdm-4.66.4 triton-2.0.0 typer-0.12.3 typing-extensions-4.12.2 tzdata-2024.1 urllib3-2.2.2 watchdog-4.0.1 werkzeug-3.0.3 wheel-0.43.0 zipp-3.19.2

Pillow is still being installed by torchvision even though pillow-simd was installed already. I looked in setup.py and found this:

def get_requirements():
def get_dist(pkgname):
try:
return get_distribution(pkgname)
except DistributionNotFound:
return None

pytorch_dep = "torch"
if os.getenv("PYTORCH_VERSION"):
    pytorch_dep += "==" + os.getenv("PYTORCH_VERSION")

requirements = [
    # TODO: Remove <2 constraint! https://github.com/pytorch/vision/issues/8531
    "numpy<2" if sys.platform == "win32" else "numpy",
    pytorch_dep,
]

# Excluding 8.3.* because of https://github.com/pytorch/vision/issues/4934
pillow_ver = " >= 5.3.0, !=8.3.*"
pillow_req = "pillow-simd" if get_dist("pillow-simd") is not None else "pillow"
requirements.append(pillow_req + pillow_ver)

return requirements

but it does not seem to work correctly when installing the package. Does it only work if building from source

You could try to install torchvision with --no-deps in case the binaries require PIL and don’t recognize PIL-SIMD.

1 Like