def name_path(mod, pkg): loader = None parent = None path = sys.path if pkg: pkg_path = name_path(pkg, None) if pkg_path: path = [dirname(pkg_path), ] + path parts = mod.split('.') prefix = '' for part in parts: if not part: prefix += '.' continue name = prefix + part loader = PathFinder.find_module(name, path) prefix = '' if loader: parent = dirname(loader.path) if loader.is_package(name): path = parent, else: path = tuple() if not loader: return None return loader.path
def load(directory): curdir = os.path.join(directory, 'scripts', 'pbs', 'commands') commands = {} for dir, subdirs, files in os.walk(curdir): for filename in files: name, ext = os.path.splitext(filename) if ext == '.py' and name != '__init__': loader = PathFinder.find_module(name, [curdir]) commands[name] = loader.load_module() return commands
def get_alternative(mod, pkg = None): if mod.startswith('.') and pkg: loader = PathFinder.find_module(pkg, path) if loader: modpath = ast.name_path(mod, pkg) mod = pkg + mod fname = mod.replace('.', '/') + '.js' # FIXME for p in path: if os.path.isdir(p): candidate = os.path.join(p, fname) if os.path.isfile(candidate): return candidate, mod return None, None
def _load_module(module_name, filename, *paths): name, ext = os.path.splitext(filename) if ext in ('.py', ''): loader = PathFinder.find_module(name, path=paths) if loader is None: loader = PathFinder.find_module(name) if loader is None: raise ImportError( 'Could not find module {} on path {} or sys.path'.format( name, paths)) else: loader = None for path in paths: p = os.path.normpath(os.path.join(path, filename)) if os.path.exists(p): loader = SourceFileLoader(module_name, p) if loader is None: raise ImportError( 'Could not find module {} on path {}'.format(name, paths)) loader.name = module_name return loader.load_module()
def _get_source(self, module_name, package_path): if six.PY2: import imp (file, pathname, desc) = imp.find_module( module_name.split('.')[-1], package_path ) source_code = file.read() file.close() file_path = file.name else: from importlib.machinery import PathFinder loader = PathFinder.find_module(module_name, package_path) source_code = loader.get_source(module_name) file_path = loader.path return source_code, file_path
def find_module(self, fullname, path=None): if path is None and fullname in self._path_dct: p = self._path_dct[fullname] loader = PathFinder.find_module(fullname, path=[p]) return loader return None
def find_module(cls, fullname, path=None): loader = PathFinder.find_module(fullname, path=path) if not loader: return loader = CustomLoader(loader) return loader
import sys from importlib.machinery import PathFinder loader = PathFinder.find_module("AutomaticPackageReloader") mod = loader.load_module("AutomaticPackageReloader") sys.modules["AutomaticPackageReloader"] = mod from AutomaticPackageReloader import package_reloader as package_reloader38 # noqa class PackageReloader33ReloadCommand( package_reloader38.PackageReloaderReloadCommand): pass