我们从Python开源项目中,提取了以下7个代码示例,用于说明如何使用pkgutil.ImpImporter()。
def find_dotted(names, parentdir=None): """ Dotted import. 'names' is a list of path components, 'parentdir' is the parent directory. """ filename = None for name in names: mod = ImpImporter(parentdir).find_module(name) if not mod: break filename = mod.get_filename() if not filename: break parentdir = dirname(filename) else: return filename
def load_plugins(): loaded_files = [] for module in pkgutil.iter_modules(): if six.PY3 and not isinstance(module, tuple): file_path = '%s/%s/plugins.py' % (module.module_finder.path, module.name) if file_path not in loaded_files: load_plugin_from_path(file_path) loaded_files.append(file_path) elif six.PY3 or isinstance(module[0], pkgutil.ImpImporter): file_path = '%s/%s/plugins.py' % (module[0].path, module[1]) if file_path not in loaded_files: load_plugin_from_path(file_path) loaded_files.append(file_path) # ----------------- # API ENTRY POINTS # -----------------
def test_importer_deprecated(self): with self.check_deprecated(): x = pkgutil.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 ## print find_module('ctypes.util') ## print find_module('util', '/usr/lib/python2.5/ctypes/__init__.py') ## raise SystemExit
def load_plugins(scope=None): scope = scope or PLUGIN_SCOPE_SERVICES if PLUGINS_LOADED.get(scope, None): return setup_logging() loaded_files = [] result = [] for module in pkgutil.iter_modules(): file_path = None if six.PY3 and not isinstance(module, tuple): file_path = '%s/%s/plugins.py' % (module.module_finder.path, module.name) elif six.PY3 or isinstance(module[0], pkgutil.ImpImporter): if hasattr(module[0], 'path'): file_path = '%s/%s/plugins.py' % (module[0].path, module[1]) if file_path and file_path not in loaded_files: plugin_config = load_plugin_from_path(file_path, scope=scope) if plugin_config: result.append(plugin_config) loaded_files.append(file_path) # set global flag PLUGINS_LOADED[scope] = result return result # ----------------- # API ENTRY POINTS # -----------------