def find_module(modulename): """Find the module named `modulename`. Returns the file path of the module, the name of the enclosing package, and the spec. """ try: spec = importlib_util_find_spec(modulename) except ImportError as err: raise NoSource(str(err)) if not spec: raise NoSource("No module named %r" % (modulename, )) pathname = spec.origin packagename = spec.name if spec.submodule_search_locations: mod_main = modulename + ".__main__" spec = importlib_util_find_spec(mod_main) if not spec: raise NoSource( "No module named %s; " "%r is a package and cannot be directly executed" % (mod_main, modulename)) pathname = spec.origin packagename = spec.name packagename = packagename.rpartition(".")[0] return pathname, packagename, spec
def find_module(modulename): """Find the module named `modulename`. Returns the file path of the module, and the name of the enclosing package. """ try: spec = importlib_util_find_spec(modulename) except ImportError as err: raise NoSource(str(err)) if not spec: raise NoSource("No module named %r" % (modulename,)) pathname = spec.origin packagename = spec.name if pathname.endswith("app.py") and not modulename.endswith("__init__"): mod_main = modulename + ".__main__" spec = importlib_util_find_spec(mod_main) if not spec: raise NoSource( "No module named %s; " "%r is a package and cannot be directly executed" % (mod_main, modulename) ) pathname = spec.origin packagename = spec.name packagename = packagename.rpartition(".")[0] return pathname, packagename
def find_module(modulename): """Find the module named `modulename`. Returns the file path of the module, and the name of the enclosing package. """ # pylint: disable=no-member try: spec = importlib_util_find_spec(modulename) except ImportError as err: raise NoSource(str(err)) if not spec: raise NoSource("No module named %r" % (modulename,)) pathname = spec.origin packagename = spec.name if pathname.endswith("__init__.py"): mod_main = modulename + ".__main__" spec = importlib_util_find_spec(mod_main) if not spec: raise NoSource( "No module named %s; " "%r is a package and cannot be directly executed" % (mod_main, modulename) ) pathname = spec.origin packagename = spec.name packagename = packagename.rpartition(".")[0] return pathname, packagename
def file_for_module(modulename): """Find the file for `modulename`, or return None.""" if importlib_util_find_spec: filename = None try: spec = importlib_util_find_spec(modulename) except ImportError: pass else: if spec is not None: filename = spec.origin return filename else: import imp openfile = None glo, loc = globals(), locals() try: # Search for the module - inside its parent package, if any - using # standard import mechanics. if '.' in modulename: packagename, name = modulename.rsplit('.', 1) package = __import__(packagename, glo, loc, ['__path__']) searchpath = package.__path__ else: packagename, name = None, modulename searchpath = None # "top-level search" in imp.find_module() openfile, pathname, _ = imp.find_module(name, searchpath) return pathname except ImportError: return None finally: if openfile: openfile.close()