from imp import find_module from pkgutil import ImpImporter from os.path import * for a in (imp.PY_SOURCE, imp.PY_COMPILED, imp.C_EXTENSION, imp.PY_RESOURCE, imp.PKG_DIRECTORY, imp.C_BUILTIN, imp.PY_FROZEN): print a modname = 'signal' mod = ImpImporter().find_module(modname) print 'mod', mod print 'filename', mod.get_filename() print 'source', mod.get_source() print 'code', mod.get_code() print 'file', mod.file print 'etc', mod.etc ## print 'ispackage', mod.is_package('util') ## print 'data', mod.get_data() for a in dir(mod): v = getattr(mod, a) print a, v
def __init__(self, path): super(PyModulePath, self).__init__() self.is_pymodule = self.is_file() and \ lexer.analyse_text(self.open().read()) == 1.0 if self.is_pymodule: self.module = ImpImporter(str(self.resolve().parent)) \ .find_module(self.stem).load_module(self.stem)
def get_importer(path_item): """Retrieve a PEP 302 importer for the given path item """ if sys.version < '2.3': importer = None else: try: importer = sys.path_importer_cache[path_item] except KeyError: for path_hook in sys.path_hooks: try: importer = path_hook(path_item) break except ImportError: pass else: importer = None sys.path_importer_cache.setdefault(path_item, importer) # The boolean values are used for caching valid and invalid # file paths for the built-in import machinery if importer in (None, True, False): try: importer = ImpImporter(path_item) except ImportError: importer = None return importer
def find_mod(modname, fn): print '\n\n\n-----', modname, fn mod = ImpImporter().find_module(modname) print 'global', mod, mod and mod.get_filename() mod = ImpImporter(dirname(fn)).find_module(modname) print 'local', mod, mod and mod.get_filename() try: mod = find_module(modname) except ImportError: mod = 'ERROR' print 'imp global', mod try: mod = find_module(modname, dirname(fn)) except ImportError: mod = 'ERROR' print 'imp local', mod
def iter_importers(fullname=''): if '.' in fullname: # Get the containing package's __path__ pkg = '.'.join(fullname.split('.')[:-1]) if pkg not in sys.modules: __import__(pkg) path = sys.modules[pkg].__path__ else: # sys.meta_path is available in Python 2.3+ for importer in getattr(sys, 'meta_path', []): yield importer path = sys.path for item in path: yield get_importer(item) if '.' not in fullname: yield ImpImporter()
def find_mod(modname, fn): print('\n\n\n-----', modname, fn) mod = ImpImporter().find_module(modname) print('global', mod, mod and mod.get_filename()) mod = ImpImporter(dirname(fn)).find_module(modname) print('local', mod, mod and mod.get_filename()) try: mod = find_module(modname) except ImportError: mod = 'ERROR' print('imp global', mod) try: mod = find_module(modname, dirname(fn)) except ImportError: mod = 'ERROR' print('imp local', mod)
def __init__(self, path=None): object.__init__(self) ImpImporter.__init__(self, path)
#!/usr/bin/env python import types, imp from imp import find_module from pkgutil import ImpImporter from os.path import * for a in (imp.PY_SOURCE, imp.PY_COMPILED, imp.C_EXTENSION, imp.PY_RESOURCE, imp.PKG_DIRECTORY, imp.C_BUILTIN, imp.PY_FROZEN): print a modname = 'signal' mod = ImpImporter().find_module(modname) print 'mod', mod print 'filename', mod.get_filename() print 'source', mod.get_source() print 'code', mod.get_code() print 'file', mod.file print 'etc', mod.etc ## print 'ispackage', mod.is_package('util') ## print 'data', mod.get_data() for a in dir(mod): v = getattr(mod, a) print a, v
#!/usr/bin/env python import sys, types, imp from imp import find_module from pkgutil import ImpImporter from os.path import * root = '/home/blais/p/snakefood/test/snakefood' sys.path.insert(0, root) ## i = ImpImporter(join(root, 'project')) ## mod = i.find_module('bar') ## print mod, mod.get_filename() ## import project.bar i = ImpImporter() mod = i.find_module('project') print mod, mod.get_filename() i = ImpImporter(dirname(mod.get_filename())) mod = i.find_module('bar') print mod, mod.get_filename()
def _get_package_loader(self): return ImpImporter(self.filename).find_module('__init__')