summaryrefslogtreecommitdiffstats
path: root/Lib/runpy.py
diff options
context:
space:
mode:
authorMartin Panter <vadmium+py@gmail.com>2016-08-21 05:07:35 (GMT)
committerMartin Panter <vadmium+py@gmail.com>2016-08-21 05:07:35 (GMT)
commitf9ed528fafafda147f20f345195ced23b141ace9 (patch)
treecce1cb2ce72ad29b035969ddaf1d889a5eec35c6 /Lib/runpy.py
parent49dcf9d858eaeebe687bfbdd36d2e579ec86b031 (diff)
parent9c8aa9bffe755fe6126dc72dfd037c6b20e65906 (diff)
downloadcpython-f9ed528fafafda147f20f345195ced23b141ace9.zip
cpython-f9ed528fafafda147f20f345195ced23b141ace9.tar.gz
cpython-f9ed528fafafda147f20f345195ced23b141ace9.tar.bz2
Issue #27487: Merge runpy warning from 3.5
Diffstat (limited to 'Lib/runpy.py')
-rw-r--r--Lib/runpy.py11
1 files changed, 10 insertions, 1 deletions
diff --git a/Lib/runpy.py b/Lib/runpy.py
index 6b6fc24..d86f0e4 100644
--- a/Lib/runpy.py
+++ b/Lib/runpy.py
@@ -114,6 +114,15 @@ def _get_module_details(mod_name, error=ImportError):
if e.name is None or (e.name != pkg_name and
not pkg_name.startswith(e.name + ".")):
raise
+ # Warn if the module has already been imported under its normal name
+ existing = sys.modules.get(mod_name)
+ if existing is not None and not hasattr(existing, "__path__"):
+ from warnings import warn
+ msg = "{mod_name!r} found in sys.modules after import of " \
+ "package {pkg_name!r}, but prior to execution of " \
+ "{mod_name!r}; this may result in unpredictable " \
+ "behaviour".format(mod_name=mod_name, pkg_name=pkg_name)
+ warn(RuntimeWarning(msg))
try:
spec = importlib.util.find_spec(mod_name)
@@ -121,7 +130,7 @@ def _get_module_details(mod_name, error=ImportError):
# This hack fixes an impedance mismatch between pkgutil and
# importlib, where the latter raises other errors for cases where
# pkgutil previously raised ImportError
- msg = "Error while finding spec for {!r} ({}: {})"
+ msg = "Error while finding module specification for {!r} ({}: {})"
raise error(msg.format(mod_name, type(ex).__name__, ex)) from ex
if spec is None:
raise error("No module named %s" % mod_name)