'importlib.machinery.SourceFileLoader(name, pathname).load_module()'
' instead')
warnings.warn(msg, DeprecationWarning, 2)
- return _LoadSourceCompatibility(name, pathname, file).load_module(name)
+ _LoadSourceCompatibility(name, pathname, file).load_module(name)
+ module = sys.modules[name]
+ # To allow reloading to potentially work, use a non-hacked loader which
+ # won't rely on a now-closed file object.
+ module.__loader__ = _bootstrap.SourceFileLoader(name, pathname)
+ return module
class _LoadCompiledCompatibility(_HackedGetData,
'importlib.machinery.SourcelessFileLoader(name, pathname).'
'load_module() instead ')
warnings.warn(msg, DeprecationWarning, 2)
- return _LoadCompiledCompatibility(name, pathname, file).load_module(name)
+ _LoadCompiledCompatibility(name, pathname, file).load_module(name)
+ module = sys.modules[name]
+ # To allow reloading to potentially work, use a non-hacked loader which
+ # won't rely on a now-closed file object.
+ module.__loader__ = _bootstrap.SourcelessFileLoader(name, pathname)
+ return module
def load_package(name, path):
Library
-------
+- Issue #17358: Modules loaded by imp.load_source() and load_compiled() (and by
+ extention load_module()) now have a better chance of working when reloaded.
+
- Issue #17353: Plistlib emitted empty data tags with deeply nested datastructures
- Issue #11714: Use 'with' statements to assure a Semaphore releases a