diff --git a/Lib/pydoc.py b/Lib/pydoc.py --- a/Lib/pydoc.py +++ b/Lib/pydoc.py @@ -242,8 +242,13 @@ else: loader = importlib.machinery.ExtensionFileLoader('__temp__', filename) + # XXX Don't pass in the loader? + spec = importlib.util.module_from_file_location('__temp__', + filename, + loader=loader) + spec = importlib._bootstrap._SpecMethods(spec) try: - module = loader.load_module('__temp__') + module = spec.load() except: return None result = (module.__doc__ or '').splitlines()[0] @@ -277,8 +282,11 @@ loader = importlib._bootstrap.SourcelessFileLoader(name, path) else: loader = importlib._bootstrap.SourceFileLoader(name, path) + # XXX Don't pass in the loader? + spec = importlib.util.module_from_file_location(name, path, loader=loader) + spec = importlib._bootstrap._SpecMethods(spec) try: - return loader.load_module(name) + return spec.load() except: raise ErrorDuringImport(path, sys.exc_info()) @@ -2008,10 +2016,11 @@ callback(None, modname, '') else: try: - loader = importer.find_module(modname) + spec = pkgutil._get_spec(importer, modname) except SyntaxError: # raised by tests for bad coding cookies or BOM continue + loader = spec.loader if hasattr(loader, 'get_source'): try: source = loader.get_source(modname) @@ -2025,8 +2034,9 @@ else: path = None else: + spec = importlib._bootstrap._SpecMethods(spec) try: - module = loader.load_module(modname) + module = spec.load() except ImportError: if onerror: onerror(modname)