Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 21 additions & 2 deletions PIL/Image.py
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,9 @@ def __getattr__(self, id):

except ImportError as v:
core = _imaging_not_installed()
if str(v)[:20] == "Module use of python" and warnings:
if not warnings: # the warnings module is available since Python 2.1
raise # raise the original ImportError.
elif str(v).startswith("Module use of python"):
# The _imaging C module is present, but not compiled for
# the right version (windows only). Print a warning, if
# possible.
Expand All @@ -70,8 +72,25 @@ def __getattr__(self, id):
"of Python; most PIL functions will be disabled",
RuntimeWarning
)
if str(v).startswith("The _imaging extension") and warnings:
elif str(v).startswith("The _imaging extension"):
warnings.warn(str(v), RuntimeWarning)
elif "Symbol not found: _PyUnicodeUCS2_FromString" in str(v):
warnings.warn(
"The _imaging extension was build for Python with UCS2 support; "
"recompile PIL or build Python --without-wide-unicode. "
"Most PIL functions will be disabled",
RuntimeWarning
)
elif "Symbol not found: _PyUnicodeUCS4_FromString" in str(v):
warnings.warn(
"The _imaging extension was build for Python with UCS4 support; "
"recompile PIL or build Python --with-wide-unicode. "
"Most PIL functions will be disabled",
RuntimeWarning
)
else:
# unknown problem. Raise the original exception.
raise

try:
import builtins
Expand Down