我们从Python开源项目中,提取了以下50个代码示例,用于说明如何使用imp.find_module()。
def find_module(module, paths=None): """Just like 'imp.find_module()', but with package support""" parts = module.split('.') while parts: part = parts.pop(0) f, path, (suffix, mode, kind) = info = imp.find_module(part, paths) if kind == PKG_DIRECTORY: parts = parts or ['__init__'] paths = [path] elif parts: raise ImportError("Can't find %r in %s" % (parts, module)) return info
def loadModule(filename): if filename == '': raise RuntimeError, 'Empty filename cannot be loaded' print "Loading module %s" % (filename) searchPath, file = os.path.split(filename) if not searchPath in sys.path: sys.path.append(searchPath) sys.path.append(os.path.normpath(searchPath+"/../")) moduleName, ext = os.path.splitext(file) fp, pathName, description = imp.find_module(moduleName, [searchPath,]) try: module = imp.load_module(moduleName, fp, pathName, description) finally: if fp: fp.close() return module
def import_it(self, partname, fqname, parent, force_load=0): if not partname: # completely empty module name should only happen in # 'from . import' or __import__("") return parent if not force_load: try: return self.modules[fqname] except KeyError: pass try: path = parent and parent.__path__ except AttributeError: return None partname = str(partname) stuff = self.loader.find_module(partname, path) if not stuff: return None fqname = str(fqname) m = self.loader.load_module(fqname, stuff) if parent: setattr(parent, partname, m) return m
def load_package(self, fqname, pathname): self.msgin(2, "load_package", fqname, pathname) newname = replacePackageMap.get(fqname) if newname: fqname = newname m = self.add_module(fqname) m.__file__ = pathname m.__path__ = [pathname] # As per comment at top of file, simulate runtime __path__ additions. m.__path__ = m.__path__ + packagePathMap.get(fqname, []) fp, buf, stuff = self.find_module("__init__", m.__path__) self.load_module(fqname, fp, buf, stuff) self.msgout(2, "load_package ->", m) return m
def find_module(self, name, path, parent=None): if parent is not None: # assert path is not None fullname = parent.__name__+'.'+name else: fullname = name if fullname in self.excludes: self.msgout(3, "find_module -> Excluded", fullname) raise ImportError, name if path is None: if name in sys.builtin_module_names: return (None, None, ("", "", imp.C_BUILTIN)) path = self.path return imp.find_module(name, path)
def find_module(module, paths=None): """Just like 'imp.find_module()', but with package support""" parts = module.split('.') while parts: part = parts.pop(0) f, path, (suffix,mode,kind) = info = imp.find_module(part, paths) if kind==PKG_DIRECTORY: parts = parts or ['__init__'] paths = [path] elif parts: raise ImportError("Can't find %r in %s" % (parts,module)) return info
def install_other(subdir): cwd = os.getcwd() path = os.path.join(cwd, subdir) try: os.chdir(path) except OSError, error: if error.errno not in (errno.ENOENT, errno.ENOTDIR): raise print >> sys.stderr, "Could not find directory %r" % path return try: module_info = imp.find_module("setup", ["."]) imp.load_module("setup", *module_info) finally: os.chdir(cwd)
def get(prop): db_type = name() modname = 'trytond.backend.%s' % db_type if modname not in sys.modules: try: __import__(modname) except ImportError: if not pkg_resources: raise ep, = pkg_resources.iter_entry_points('trytond.backend', db_type) mod_path = os.path.join(ep.dist.location, *ep.module_name.split('.')[:-1]) fp, pathname, description = imp.find_module(db_type, [mod_path]) imp.load_module(modname, fp, pathname, description) module = sys.modules[modname] return getattr(module, prop)
def import_module(name): name = os.path.realpath(name) thepath = os.path.dirname(name) name = os.path.basename(name) if name.endswith(".py"): name = name[:-3] f,path,desc = imp.find_module(name,[thepath]) try: return imp.load_module(name, f, path, desc) finally: if f: f.close() #### INTERNAL/EXTERNAL FILE EMBEDDING ####
def check_packages(str_package): """ Checks if the specified python package is installed. return type: boolean :Arguments: 1. str_package (str) = name of the package to be checked :Returns: bool = True/False """ try: imp.find_module(str_package) bool_found = True except ImportError: bool_found = False return bool_found
def _find_module_path(module_name, mod_path=None): """Recursively find the module path. ImportError will be raised if the module cannot be found. """ parts = module_name.split(".") find_args = [parts[0]] if mod_path is not None: find_args.append([mod_path]) file_,mod_path,desc = imp.find_module(*find_args) if len(parts) > 1: return _find_module_path(".".join(parts[1:]), mod_path) return mod_path
def reload(self, module, pdata): """ Reloads modules that might not be in the path. """ try: import imp fp, pathname, description = imp.find_module(pdata.mod_name, [pdata.fpath]) try: module = imp.load_module(pdata.mod_name, fp, pathname,description) finally: if fp: fp.close() except: if pdata.mod_name in sys.modules: del sys.modules[pdata.mod_name] module = self.import_plugin(pdata) return module
def _check_if_pyc(fname): """Return True if the extension is .pyc, False if .py and None if otherwise""" from imp import find_module from os.path import realpath, dirname, basename, splitext # Normalize the file-path for the find_module() filepath = realpath(fname) dirpath = dirname(filepath) module_name = splitext(basename(filepath))[0] # Validate and fetch try: fileobj, fullpath, (_, _, pytype) = find_module(module_name, [dirpath]) except ImportError: raise IOError("Cannot find config file. " "Path maybe incorrect! : {0}".format(filepath)) return pytype, fileobj, fullpath
def get_visualizer_module(name): # try to import the specified visualization module: visualizer_path = os.path.join(options.cfg.base_path, "visualizer") try: find = imp.find_module(name, [visualizer_path]) module = imp.load_module(name, *find) return module except Exception as e: print(e) msg = "<code style='color: darkred'>{type}: {code}</code>".format( type=type(e).__name__, code=sys.exc_info()[1]) logger.error(msg) QtWidgets.QMessageBox.critical( None, "Visualization error – Coquery", VisualizationModuleError(name, msg).error_message) return None
def find_module(self, fullname, path=None): logger.debug('Running find_module: {0}...'.format(fullname)) if '.' in fullname: parent, child = fullname.rsplit('.', 1) if path is None: loader = self.find_module(parent, path) mod = loader.load_module(parent) path = mod.__path__ fullname = child # Perhaps we should try using the new importlib functionality in Python # 3.3: something like this? # thing = importlib.machinery.PathFinder.find_module(fullname, path) try: self.found = imp.find_module(fullname, path) except Exception as e: logger.debug('Py2Fixer could not find {0}') logger.debug('Exception was: {0})'.format(fullname, e)) return None self.kind = self.found[-1][-1] if self.kind == imp.PKG_DIRECTORY: self.pathname = os.path.join(self.found[1], '__init__.py') elif self.kind == imp.PY_SOURCE: self.pathname = self.found[1] return self
def _find_and_load_module(self, name, path=None): """ Finds and loads it. But if there's a . in the name, handles it properly. """ bits = name.split('.') while len(bits) > 1: # Treat the first bit as a package packagename = bits.pop(0) package = self._find_and_load_module(packagename, path) try: path = package.__path__ except AttributeError: # This could be e.g. moves. flog.debug('Package {0} has no __path__.'.format(package)) if name in sys.modules: return sys.modules[name] flog.debug('What to do here?') name = bits[0] module_info = imp.find_module(name, path) return imp.load_module(name, *module_info)
def test_examples(): examples_pat = os.path.join(os.path.abspath(os.path.dirname(__file__)), '../../examples/*/*.py') # Filter out __init__.py examples = [f for f in glob.glob(examples_pat) if not any([x in f for x in ['__init__.py', 'molecular']])] for e in examples: example_dir = os.path.dirname(e) sys.path.insert(0, example_dir) (module_name, _) = os.path.splitext(os.path.basename(e)) (module_file, module_path, desc) = \ imp.find_module(module_name, [example_dir]) m = imp.load_module(module_name, module_file, module_path, desc) if hasattr(m, 'main'): m.main(debug=False)
def load_plugins(logger, plugins, pluginpath): def load_plugin(name): logger.debug('Loading plugin %s' % name) fp, pathname, description = imp.find_module(name, [pluginpath]) try: return imp.load_module(name, fp, pathname, description) finally: if fp: fp.close() logger.debug('Loading plugins from %s...' % pluginpath) expanded = (glob.glob(os.path.join(pluginpath, '*' + ext)) for ext in python_extensions) files = itertools.chain.from_iterable(expanded) names = set(os.path.splitext(os.path.basename(fn))[0] for fn in files) for name in names: if name != '__init__': plugin = load_plugin(name) if hasattr(plugin, 'plugin_init'): obj = plugin.plugin_init(plugins) plugins.append(obj or plugin) else: plugins.append(plugin)
def load(modname): """ Loads all the modules that are named 'modname' from all the installed applications. """ def _get_module(app, modname): # Find out the app's __path__ try: app_path = import_module(app).__path__ except AttributeError: # pragma: no cover return # Use imp.find_module to find the app's modname.py try: imp.find_module(modname, app_path) except ImportError: # pragma: no cover return # Import the app's module file import_module('{}.{}'.format(app, modname)) for app in settings.INSTALLED_APPS: _get_module(app, modname)
def get_version(self, paths=None, default="unknown"): """Get version number of installed module, 'None', or 'default' Search 'paths' for module. If not found, return 'None'. If found, return the extracted version attribute, or 'default' if no version attribute was specified, or the value cannot be determined without importing the module. The version is formatted according to the requirement's version format (if any), unless it is 'None' or the supplied 'default'. """ if self.attribute is None: try: f, p, i = find_module(self.module, paths) if f: f.close() return default except ImportError: return None v = get_module_constant(self.module, self.attribute, default, paths) if v is not None and v is not default and self.format is not None: return self.format(v) return v