summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Xia <richardxia@richardxia.com>2013-10-28 03:11:05 -0700
committerAnssi Kääriäinen <akaariai@gmail.com>2013-11-26 18:51:39 +0200
commit5725236c3ee4323203aa681cb54d1ff1d7f376df (patch)
treea23fef4d6b4d53656b54279b9c421aba9a92eb1f
parent9d6c48aeb02320fd33b4314928c4a3bcfc49f667 (diff)
Fixed #21355 -- try importing _imaging from PIL namespace first.
-rw-r--r--django/utils/image.py20
1 files changed, 13 insertions, 7 deletions
diff --git a/django/utils/image.py b/django/utils/image.py
index 8df5850338..ff5dcc57e5 100644
--- a/django/utils/image.py
+++ b/django/utils/image.py
@@ -18,6 +18,8 @@ Combinations To Account For
* CPython 2.x may *NOT* have _imaging (broken & needs a error message)
* CPython 3.x doesn't work
* 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:
@@ -62,7 +64,8 @@ Approach
* 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.
- * 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
@@ -121,12 +124,15 @@ def _detect_image_library():
# produce a fully-working PIL & will create a ``_imaging`` module,
# we'll attempt to import it to verify their kit works.
try:
- import _imaging as PIL_imaging
- except ImportError as err:
- raise ImproperlyConfigured(
- _("The '_imaging' module for the PIL could not be "
- "imported: %s") % err
- )
+ from PIL import _imaging as PIL_imaging
+ except ImportError:
+ try:
+ import _imaging as PIL_imaging
+ except ImportError as err:
+ raise ImproperlyConfigured(
+ _("The '_imaging' module for the PIL could not be "
+ "imported: %s") % err
+ )
# Try to import ImageFile as well.
try: