ihooks FancyModuleLoader.load_module()
imputils Importer._process_result():
remove name from modules dict if exec fails.
This is what all the builtin importers do now, new in 2.4.
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 @@
# 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