Fixed issue where patcher wasn't correctly restoring modules after an importerror.
This commit is contained in:
@@ -13,6 +13,7 @@ def inject(module_name, new_globals, *additional_modules):
|
||||
|
||||
## Remove the old module from sys.modules and reimport it while the specified modules are in place
|
||||
old_module = sys.modules.pop(module_name, None)
|
||||
try:
|
||||
module = __import__(module_name, {}, {}, module_name.split('.')[:-1])
|
||||
|
||||
if new_globals is not None:
|
||||
@@ -23,10 +24,11 @@ def inject(module_name, new_globals, *additional_modules):
|
||||
|
||||
## Keep a reference to the new module to prevent it from dying
|
||||
sys.modules['__patched_module_' + module_name] = module
|
||||
finally:
|
||||
## Put the original module back
|
||||
if old_module is not None:
|
||||
sys.modules[module_name] = old_module
|
||||
else:
|
||||
elif module_name in sys.modules:
|
||||
del sys.modules[module_name]
|
||||
|
||||
## Put all the saved modules back
|
||||
|
Reference in New Issue
Block a user