Python pkgutil.get_loader() Examples
The following are 30
code examples of pkgutil.get_loader().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
pkgutil
, or try the search function
.
Example #1
Source File: __init__.py From udata with GNU Affero General Public License v3.0 | 6 votes |
def __init__(self, entrypoint): self.entrypoint = entrypoint # Compute path without loading the module path = pkgutil.get_loader(entrypoint.module_name).path path = os.path.dirname(path) super(ConfigurableTheme, self).__init__(path) self.variants = self.info.get('variants', []) if 'default' not in self.variants: self.variants.insert(0, 'default') self.context_processors = {} # Check JSON manifest manifest = os.path.join(path, 'manifest.json') if os.path.exists(manifest): self.manifest = manifest
Example #2
Source File: helpers.py From quart with MIT License | 6 votes |
def find_package(name: str) -> Tuple[Optional[Path], Path]: """Finds packages install prefix (or None) and it's containing Folder """ module = name.split(".")[0] loader = pkgutil.get_loader(module) if name == "__main__" or loader is None: package_path = Path.cwd() else: if hasattr(loader, "get_filename"): filename = loader.get_filename(module) # type: ignore else: __import__(name) filename = sys.modules[name].__file__ package_path = Path(filename).resolve().parent if hasattr(loader, "is_package"): is_package = loader.is_package(module) # type: ignore if is_package: package_path = Path(package_path).resolve().parent sys_prefix = Path(sys.prefix).resolve() try: package_path.relative_to(sys_prefix) except ValueError: return None, package_path else: return sys_prefix, package_path
Example #3
Source File: diagnose.py From jarvis with GNU General Public License v2.0 | 6 votes |
def check_python_import(package_or_module): """ Checks if a python package or module is importable. Arguments: package_or_module -- the package or module name to check Returns: True or False """ logger = logging.getLogger(__name__) logger.debug("Checking python import '%s'...", package_or_module) loader = pkgutil.get_loader(package_or_module) found = loader is not None if found: logger.debug("Python %s '%s' found: %r", "package" if loader.is_package(package_or_module) else "module", package_or_module, loader.get_filename()) else: logger.debug("Python import '%s' not found", package_or_module) return found
Example #4
Source File: diagnose.py From laibot-client with MIT License | 6 votes |
def check_python_import(package_or_module): """ Checks if a python package or module is importable. Arguments: package_or_module -- the package or module name to check Returns: True or False """ logger = logging.getLogger(__name__) logger.debug("Checking python import '%s'...", package_or_module) loader = pkgutil.get_loader(package_or_module) found = loader is not None if found: logger.debug("Python %s '%s' found: %r", "package" if loader.is_package(package_or_module) else "module", package_or_module, loader.get_filename()) else: logger.debug("Python import '%s' not found", package_or_module) return found
Example #5
Source File: test_classpathimporter.py From CTFCrackTools-V2 with GNU General Public License v3.0 | 6 votes |
def test_loader_get_code(self): # Execute Python code out of the JAR jar = self.prepareJar('classimport.jar') Thread.currentThread().contextClassLoader = test_support.make_jar_classloader(jar) loader = pkgutil.get_loader('jar_pkg') space = { 'value':None, 'compiled':None} # flat_in_jar contains the assignment value = 7 code = loader.get_code('flat_in_jar') exec code in space self.assertEquals(space['value'], 7) # jar_pkg.prefer_compiled contains the assignment compiled = False code = loader.get_code('jar_pkg.prefer_compiled') exec code in space self.assertEquals(space['compiled'], False) # Compile a new one containing the assignment compiled = True self.compileToJar(jar) code = loader.get_code('jar_pkg.prefer_compiled') exec code in space self.assertEquals(space['compiled'], True)
Example #6
Source File: runpy.py From ironpython2 with Apache License 2.0 | 6 votes |
def _get_module_details(mod_name, error=ImportError): try: loader = get_loader(mod_name) if loader is None: raise error("No module named %s" % mod_name) ispkg = loader.is_package(mod_name) except ImportError as e: raise error(format(e)) if ispkg: if mod_name == "__main__" or mod_name.endswith(".__main__"): raise error("Cannot use package as __main__ module") __import__(mod_name) # Do not catch exceptions initializing package try: pkg_main_name = mod_name + ".__main__" return _get_module_details(pkg_main_name) except ImportError, e: raise error(("%s; %r is a package and cannot " + "be directly executed") %(e, mod_name))
Example #7
Source File: diagnose.py From xuebao with MIT License | 6 votes |
def check_python_import(package_or_module): """ Checks if a python package or module is importable. Arguments: package_or_module -- the package or module name to check Returns: True or False """ logger = logging.getLogger(__name__) logger.debug("Checking python import '%s'...", package_or_module) loader = pkgutil.get_loader(package_or_module) found = loader is not None if found: logger.debug("Python %s '%s' found: %r", "package" if loader.is_package(package_or_module) else "module", package_or_module, loader.get_filename()) else: logger.debug("Python import '%s' not found", package_or_module) return found
Example #8
Source File: runpy.py From medicare-demo with Apache License 2.0 | 6 votes |
def run_module(mod_name, init_globals=None, run_name=None, alter_sys=False): """Execute a module's code without importing it Returns the resulting top level namespace dictionary """ loader = get_loader(mod_name) if loader is None: raise ImportError("No module named " + mod_name) code = loader.get_code(mod_name) if code is None: raise ImportError("No code object available for " + mod_name) filename = _get_filename(loader, mod_name) if run_name is None: run_name = mod_name return _run_module_code(code, init_globals, run_name, filename, loader, alter_sys)
Example #9
Source File: test_pkgutil.py From Project-New-Reign---Nemesis-Main with GNU General Public License v3.0 | 5 votes |
def test_get_loader_handles_spec_attribute_none(self): name = 'spam' mod = type(sys)(name) mod.__spec__ = None with CleanImport(name): sys.modules[name] = mod loader = pkgutil.get_loader(name) self.assertIsNone(loader)
Example #10
Source File: helpers.py From data with GNU General Public License v3.0 | 5 votes |
def get_root_path(import_name): """Returns the path to a package or cwd if that cannot be found. This returns the path of a package or the folder that contains a module. Not to be confused with the package path returned by :func:`find_package`. """ # Module already imported and has a file attribute. Use that first. mod = sys.modules.get(import_name) if mod is not None and hasattr(mod, '__file__'): return os.path.dirname(os.path.abspath(mod.__file__)) # Next attempt: check the loader. loader = pkgutil.get_loader(import_name) # Loader does not exist or we're referring to an unloaded main module # or a main module without path (interactive sessions), go with the # current working directory. if loader is None or import_name == '__main__': return os.getcwd() # For .egg, zipimporter does not have get_filename until Python 2.7. # Some other loaders might exhibit the same behavior. if hasattr(loader, 'get_filename'): filepath = loader.get_filename(import_name) else: # Fall back to imports. __import__(import_name) filepath = sys.modules[import_name].__file__ # filepath is import_name.py for a module, or __init__.py for a package. return os.path.dirname(os.path.abspath(filepath))
Example #11
Source File: test_pkgutil.py From Project-New-Reign---Nemesis-Main with GNU General Public License v3.0 | 5 votes |
def test_get_loader_None_in_sys_modules(self): name = 'totally bogus' sys.modules[name] = None try: loader = pkgutil.get_loader(name) finally: del sys.modules[name] self.assertIsNone(loader)
Example #12
Source File: config.py From data with GNU General Public License v3.0 | 5 votes |
def patch_pkgutil_get_loader(wrapper_class=LimitedLoaderMockWrapper): """Patch pkgutil.get_loader to give loader without get_filename or archive. This provides for tests where a system has custom loaders, e.g. Google App Engine's HardenedModulesHook, which have neither the `get_filename` method nor the `archive` attribute. """ old_get_loader = pkgutil.get_loader def get_loader(*args, **kwargs): return wrapper_class(old_get_loader(*args, **kwargs)) try: pkgutil.get_loader = get_loader yield finally: pkgutil.get_loader = old_get_loader
Example #13
Source File: runpy.py From CTFCrackTools-V2 with GNU General Public License v3.0 | 5 votes |
def _get_module_details(mod_name): loader = get_loader(mod_name) if loader is None: raise ImportError("No module named %s" % mod_name) if loader.is_package(mod_name): if mod_name == "__main__" or mod_name.endswith(".__main__"): raise ImportError("Cannot use package as __main__ module") try: pkg_main_name = mod_name + ".__main__" return _get_module_details(pkg_main_name) except ImportError, e: raise ImportError(("%s; %r is a package and cannot " + "be directly executed") %(e, mod_name))
Example #14
Source File: test_classpathimporter.py From CTFCrackTools-V2 with GNU General Public License v3.0 | 5 votes |
def test_loader_is_package(self): jar = self.prepareJar('classimport.jar') Thread.currentThread().contextClassLoader = test_support.make_jar_classloader(jar) mod_name = 'flat_in_jar' loader = pkgutil.get_loader(mod_name) self.assertFalse(loader.is_package(mod_name)) self.assertTrue(loader.is_package('jar_pkg')) self.assertFalse(loader.is_package('jar_pkg.prefer_compiled'))
Example #15
Source File: test_classpathimporter.py From CTFCrackTools-V2 with GNU General Public License v3.0 | 5 votes |
def test_loader_get_data(self): # Test loader.get_data used via pkgutil.get_loader jar = self.prepareJar('classimport.jar') name = self.addResourceToJar(jar) Thread.currentThread().contextClassLoader = test_support.make_jar_classloader(jar) loader = pkgutil.get_loader('jar_pkg') # path is a resource path (not file system path using os.path.sep) path = 'jar_pkg/' + name data = loader.get_data(path) self.assertIsInstance(data, bytes) self.assertEqual(data, self.RESOURCE_DATA)
Example #16
Source File: config.py From data with GNU General Public License v3.0 | 5 votes |
def patch_pkgutil_get_loader(wrapper_class=LimitedLoaderMockWrapper): """Patch pkgutil.get_loader to give loader without get_filename or archive. This provides for tests where a system has custom loaders, e.g. Google App Engine's HardenedModulesHook, which have neither the `get_filename` method nor the `archive` attribute. """ old_get_loader = pkgutil.get_loader def get_loader(*args, **kwargs): return wrapper_class(old_get_loader(*args, **kwargs)) try: pkgutil.get_loader = get_loader yield finally: pkgutil.get_loader = old_get_loader
Example #17
Source File: helpers.py From data with GNU General Public License v3.0 | 5 votes |
def get_root_path(import_name): """Returns the path to a package or cwd if that cannot be found. This returns the path of a package or the folder that contains a module. Not to be confused with the package path returned by :func:`find_package`. """ # Module already imported and has a file attribute. Use that first. mod = sys.modules.get(import_name) if mod is not None and hasattr(mod, '__file__'): return os.path.dirname(os.path.abspath(mod.__file__)) # Next attempt: check the loader. loader = pkgutil.get_loader(import_name) # Loader does not exist or we're referring to an unloaded main module # or a main module without path (interactive sessions), go with the # current working directory. if loader is None or import_name == '__main__': return os.getcwd() # For .egg, zipimporter does not have get_filename until Python 2.7. # Some other loaders might exhibit the same behavior. if hasattr(loader, 'get_filename'): filepath = loader.get_filename(import_name) else: # Fall back to imports. __import__(import_name) filepath = sys.modules[import_name].__file__ # filepath is import_name.py for a module, or __init__.py for a package. return os.path.dirname(os.path.abspath(filepath))
Example #18
Source File: runpy.py From CTFCrackTools-V2 with GNU General Public License v3.0 | 5 votes |
def _get_module_details(mod_name): loader = get_loader(mod_name) if loader is None: raise ImportError("No module named %s" % mod_name) if loader.is_package(mod_name): if mod_name == "__main__" or mod_name.endswith(".__main__"): raise ImportError("Cannot use package as __main__ module") try: pkg_main_name = mod_name + ".__main__" return _get_module_details(pkg_main_name) except ImportError, e: raise ImportError(("%s; %r is a package and cannot " + "be directly executed") %(e, mod_name))
Example #19
Source File: helpers.py From syntheticmass with Apache License 2.0 | 5 votes |
def get_root_path(import_name): """Returns the path to a package or cwd if that cannot be found. This returns the path of a package or the folder that contains a module. Not to be confused with the package path returned by :func:`find_package`. """ # Module already imported and has a file attribute. Use that first. mod = sys.modules.get(import_name) if mod is not None and hasattr(mod, '__file__'): return os.path.dirname(os.path.abspath(mod.__file__)) # Next attempt: check the loader. loader = pkgutil.get_loader(import_name) # Loader does not exist or we're referring to an unloaded main module # or a main module without path (interactive sessions), go with the # current working directory. if loader is None or import_name == '__main__': return os.getcwd() # For .egg, zipimporter does not have get_filename until Python 2.7. # Some other loaders might exhibit the same behavior. if hasattr(loader, 'get_filename'): filepath = loader.get_filename(import_name) else: # Fall back to imports. __import__(import_name) filepath = sys.modules[import_name].__file__ # filepath is import_name.py for a module, or __init__.py for a package. return os.path.dirname(os.path.abspath(filepath))
Example #20
Source File: test_pkgutil.py From Project-New-Reign---Nemesis-Main with GNU General Public License v3.0 | 5 votes |
def test_get_loader_handles_missing_spec_attribute(self): name = 'spam' mod = type(sys)(name) del mod.__spec__ with CleanImport(name): sys.modules[name] = mod loader = pkgutil.get_loader(name) self.assertIsNone(loader)
Example #21
Source File: test_pkgutil.py From Project-New-Reign---Nemesis-Main with GNU General Public License v3.0 | 5 votes |
def test_get_loader_handles_missing_loader_attribute(self): global __loader__ this_loader = __loader__ del __loader__ try: with check_warnings() as w: self.assertIsNotNone(pkgutil.get_loader(__name__)) self.assertEqual(len(w.warnings), 0) finally: __loader__ = this_loader
Example #22
Source File: test_pkgutil.py From Project-New-Reign---Nemesis-Main with GNU General Public License v3.0 | 5 votes |
def test_get_loader_avoids_emulation(self): with check_warnings() as w: self.assertIsNotNone(pkgutil.get_loader("sys")) self.assertIsNotNone(pkgutil.get_loader("os")) self.assertIsNotNone(pkgutil.get_loader("test.support")) self.assertEqual(len(w.warnings), 0)
Example #23
Source File: runpy.py From Splunking-Crime with GNU Affero General Public License v3.0 | 5 votes |
def _get_module_details(mod_name): loader = get_loader(mod_name) if loader is None: raise ImportError("No module named %s" % mod_name) if loader.is_package(mod_name): if mod_name == "__main__" or mod_name.endswith(".__main__"): raise ImportError("Cannot use package as __main__ module") try: pkg_main_name = mod_name + ".__main__" return _get_module_details(pkg_main_name) except ImportError, e: raise ImportError(("%s; %r is a package and cannot " + "be directly executed") %(e, mod_name))
Example #24
Source File: tests.py From apm-agent-python with BSD 3-Clause "New" or "Revised" License | 5 votes |
def test_get_lines_from_loader(lineno, context, expected): stacks.get_lines_from_file.cache_clear() module = "tests.utils.stacks.linenos" loader = pkgutil.get_loader(module) fname = os.path.join(os.path.dirname(__file__), "linenos.py") result = stacks.get_lines_from_file(fname, lineno, context, loader=loader, module_name=module) assert result == expected
Example #25
Source File: zip_package.py From luci-py with Apache License 2.0 | 5 votes |
def get_module_zip_archive(module): """Given a module, returns path to a zip package that contains it or None.""" loader = pkgutil.get_loader(module) # Handle zipimporter and its variations. if loader and hasattr(loader, 'archive'): return loader.archive
Example #26
Source File: helpers.py From ctpbee with MIT License | 5 votes |
def find_package(import_name): root_mod_name = import_name.split('.')[0] loader = pkgutil.get_loader(root_mod_name) if loader is None or import_name == '__main__': package_path = os.getcwd() else: if hasattr(loader, 'get_filename'): filename = loader.get_filename(root_mod_name) elif hasattr(loader, 'archive'): filename = loader.archive else: __import__(import_name) filename = sys.modules[import_name].__file__ package_path = os.path.abspath(os.path.dirname(filename)) if _matching_loader_thinks_module_is_package( loader, root_mod_name): package_path = os.path.dirname(package_path) site_parent, site_folder = os.path.split(package_path) py_prefix = os.path.abspath(sys.prefix) if package_path.startswith(py_prefix): return py_prefix, package_path elif site_folder.lower() == 'site-packages': parent, folder = os.path.split(site_parent) # Windows like installations if folder.lower() == 'lib': base_dir = parent elif os.path.basename(parent).lower() == 'lib': base_dir = os.path.dirname(parent) else: base_dir = site_parent return base_dir, package_path return None, package_path
Example #27
Source File: patcher.py From aws-xray-sdk-python with Apache License 2.0 | 5 votes |
def _is_valid_import(module): module = module.replace('.', '/') if PY2: return bool(pkgutil.get_loader(module)) else: realpath = os.path.realpath(module) is_module = os.path.isdir(realpath) and ( os.path.isfile('{}/__init__.py'.format(module)) or os.path.isfile('{}/__init__.pyc'.format(module)) ) is_file = not is_module and ( os.path.isfile('{}.py'.format(module)) or os.path.isfile('{}.pyc'.format(module)) ) return is_module or is_file
Example #28
Source File: version_controller.py From MultiPlanarUNet with MIT License | 5 votes |
def __init__(self, logger=None, package='mpunet'): from mpunet.logging.default_logger import ScreenLogger self.package_name = package self.package_loader = pkgutil.get_loader(package) self.logger = logger or ScreenLogger() self.git_path = os.path.split(os.path.split(self.package_loader.path)[0])[0] self._mem_path = None
Example #29
Source File: config.py From Flask-P2P with MIT License | 5 votes |
def patch_pkgutil_get_loader(wrapper_class=LimitedLoaderMockWrapper): """Patch pkgutil.get_loader to give loader without get_filename or archive. This provides for tests where a system has custom loaders, e.g. Google App Engine's HardenedModulesHook, which have neither the `get_filename` method nor the `archive` attribute. """ old_get_loader = pkgutil.get_loader def get_loader(*args, **kwargs): return wrapper_class(old_get_loader(*args, **kwargs)) try: pkgutil.get_loader = get_loader yield finally: pkgutil.get_loader = old_get_loader
Example #30
Source File: envs.py From rtrl with MIT License | 5 votes |
def mujoco_py_issue_424_workaround(): """Mujoco_py generates files in site-packages for some reason. It causes trouble with docker and during runtime. https://github.com/openai/mujoco-py/issues/424 """ import os from os.path import dirname, join from shutil import rmtree import pkgutil path = join(dirname(pkgutil.get_loader("mujoco_py").path), "generated") [os.remove(join(path, name)) for name in os.listdir(path) if name.endswith("lock")]