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.
This commit is contained in:
Tim Peters 2004-08-04 02:29:12 +00:00
parent 51fa3b740f
commit 3d3cfdb499
2 changed files with 13 additions and 2 deletions

View File

@ -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

View File

@ -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