summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Lib/ihooks.py8
-rw-r--r--Lib/imputil.py7
2 files changed, 13 insertions, 2 deletions
diff --git a/Lib/ihooks.py b/Lib/ihooks.py
index 936a950..f5b93ab 100644
--- a/Lib/ihooks.py
+++ b/Lib/ihooks.py
@@ -322,7 +322,13 @@ class FancyModuleLoader(ModuleLoader):
if path:
m.__path__ = path
m.__file__ = filename
- exec code in m.__dict__
+ try:
+ exec code in m.__dict__
+ except:
+ d = self.hooks.modules_dict()
+ if name in d:
+ del d[name]
+ raise
return m
diff --git a/Lib/imputil.py b/Lib/imputil.py
index 04111dc..e6ad7ec 100644
--- a/Lib/imputil.py
+++ b/Lib/imputil.py
@@ -297,7 +297,12 @@ class Importer:
# execute the code within the module's namespace
if not is_module:
- exec code in module.__dict__
+ try:
+ exec code in module.__dict__
+ except:
+ if fqname in sys.modules:
+ del sys.modules[fqname]
+ raise
# fetch from sys.modules instead of returning module directly.
# also make module's __name__ agree with fqname, in case