[Python-checkins] cpython (3.3): Issue #16880: _imp.load_dynamic() is not defined on a platform that

brett.cannon python-checkins at python.org
Sun Mar 17 23:50:41 CET 2013


http://hg.python.org/cpython/rev/d5aa922f97f9
changeset: 82719:d5aa922f97f9
branch: 3.3
parent: 82716:3251b2a04fee
user: Brett Cannon <brett at python.org>
date: Sun Mar 17 15:48:16 2013 -0700
summary:
 Issue #16880: _imp.load_dynamic() is not defined on a platform that
does not support dynamic loading (e.g. Atari), so make sure that imp
doesn't assume it always exists.
Patch by Christian Heimes.
files:
 Lib/imp.py | 9 +++++++--
 Misc/NEWS | 2 ++
 2 files changed, 9 insertions(+), 2 deletions(-)
diff --git a/Lib/imp.py b/Lib/imp.py
--- a/Lib/imp.py
+++ b/Lib/imp.py
@@ -7,9 +7,14 @@
 """
 # (Probably) need to stay in _imp
 from _imp import (lock_held, acquire_lock, release_lock,
- load_dynamic, get_frozen_object, is_frozen_package,
+ get_frozen_object, is_frozen_package,
 init_builtin, init_frozen, is_builtin, is_frozen,
 _fix_co_filename)
+try:
+ from _imp import load_dynamic
+except ImportError:
+ # Platform doesn't support dynamic loading.
+ load_dynamic = None
 
 # Directly exposed by this module
 from importlib._bootstrap import new_module
@@ -160,7 +165,7 @@
 return load_source(name, filename, file)
 elif type_ == PY_COMPILED:
 return load_compiled(name, filename, file)
- elif type_ == C_EXTENSION:
+ elif type_ == C_EXTENSION and load_dynamic is not None:
 return load_dynamic(name, filename, file)
 elif type_ == PKG_DIRECTORY:
 return load_package(name, filename)
diff --git a/Misc/NEWS b/Misc/NEWS
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -193,6 +193,8 @@
 Library
 -------
 
+Issue #16880: Do not assume _imp.load_dynamic() is defined in the imp module.
+
 - Issue #16389: Fixed a performance regression relative to Python 3.1 in the
 caching of compiled regular expressions.
 
-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /