Fixed #21355 -- try importing _imaging from PIL namespace first.

This commit is contained in:
Richard Xia 2013-10-28 03:11:05 -07:00 committed by Anssi Kääriäinen
parent 9d6c48aeb0
commit 5725236c3e
1 changed files with 13 additions and 7 deletions

View File

@ -18,6 +18,8 @@ Combinations To Account For
* CPython 2.x may *NOT* have _imaging (broken & needs a error message) * CPython 2.x may *NOT* have _imaging (broken & needs a error message)
* CPython 3.x doesn't work * CPython 3.x doesn't work
* PyPy will *NOT* have _imaging (but works?) * PyPy will *NOT* have _imaging (but works?)
* On some platforms (Homebrew and RHEL6 reported) _imaging isn't available,
the needed import is from PIL import _imaging (refs #21355)
Restated, that looks like: Restated, that looks like:
@ -62,7 +64,8 @@ Approach
* The only option here is that we're on Python 2.x or PyPy, of which * The only option here is that we're on Python 2.x or PyPy, of which
we only care about if we're on CPython. we only care about if we're on CPython.
* If we're on CPython, attempt to ``import _imaging`` * If we're on CPython, attempt to ``from PIL import _imaging`` and
``import _imaging``
* ``ImportError`` - Bad install, toss an exception * ``ImportError`` - Bad install, toss an exception
@ -120,6 +123,9 @@ def _detect_image_library():
# We're on CPython (likely 2.x). Since a C compiler is needed to # We're on CPython (likely 2.x). Since a C compiler is needed to
# produce a fully-working PIL & will create a ``_imaging`` module, # produce a fully-working PIL & will create a ``_imaging`` module,
# we'll attempt to import it to verify their kit works. # we'll attempt to import it to verify their kit works.
try:
from PIL import _imaging as PIL_imaging
except ImportError:
try: try:
import _imaging as PIL_imaging import _imaging as PIL_imaging
except ImportError as err: except ImportError as err: