Pillow
Pillow copied to clipboard
Cannot import ImageCms with no LITTLECMS2 feature installed
If building pillow without the LITTLECMS2 feature (e.g. with the lcms library not present), it was still possible to import ImageCms
until pillow 10.2. This is done by using DeferredError
:
try:
from . import _imagingcms as core
except ImportError as ex:
# Allow error import for doc purposes, but error out when accessing
# anything in core.
from ._util import DeferredError
core = DeferredError.new(ex)
With the type hints added in 10.3, there is now a top level access to _imagingcms
alias core
:
_CmsProfileCompatible = Union[
str, SupportsRead[bytes], core.CmsProfile, ImageCmsProfile
]
Using
from PIL import ImageCms
causes now (in 10.3/10.4):
Traceback (most recent call last):
ImageCms.py(370) , in <module>
ImageCms.py(370) str, SupportsRead[bytes], core.CmsProfile, ImageCmsProfile
ImageCms.py(370) ^^^^^^^^^^^^^^^
_util.py(23) , in __getattr__
_util.py(23) raise self.ex
ImageCms.py(33) , in <module>
ImageCms.py(33) from . import _imagingcms as core
ImportError: cannot import name '_imagingcms' from 'PIL' (C:\git\...\site-packages\PIL\__init__.py)
Happens both under Windows (as shown) and Linux.
This is probably a fringe problem, but can easily be fixed by using the string version of the problematic type hint:
_CmsProfileCompatible = Union[
str, SupportsRead[bytes], "core.CmsProfile", ImageCmsProfile
]
Environment:
- OS: Windows 10, Ubuntu 22.04
- Python: 3.11
- Pillow: 103, 10.4
Features:
--------------------------------------------------------------------
Pillow 10.3.0
Python 3.11.9 (main, Jun 28 2024, 12:22:23) [MSC v.1939 64 bit (AMD64)]
--------------------------------------------------------------------
Python executable is C:\git\...bin\Python.exe
Environment Python files loaded from C:\git\...\bin
System Python files loaded from
--------------------------------------------------------------------
Python Pillow modules loaded from C:\git\...\Lib\site-packages\PIL
Binary Pillow modules loaded from C:\git\...\Lib\site-packages\PIL
--------------------------------------------------------------------
--- PIL CORE support ok, compiled for 10.3.0
*** TKINTER support not installed
*** FREETYPE2 support not installed
*** LITTLECMS2 support not installed
*** WEBP support not installed
*** WEBP Transparency support not installed
*** WEBPMUX support not installed
*** WEBP Animation support not installed
--- JPEG support ok, compiled for libjpeg-turbo 3.0.3
*** OPENJPEG (JPEG2000) support not installed
--- ZLIB (PNG/ZIP) support ok, loaded 1.3.1
--- LIBTIFF support ok, loaded 4.6.0
*** RAQM (Bidirectional Text) support not installed
*** LIBIMAGEQUANT (Quantization method) support not installed
*** XCB (X protocol) support not installed
--------------------------------------------------------------------