def load_source(name, pathname, file=None): loader = _LoadSourceCompatibility(name, pathname, file) spec = util.spec_from_file_location(name, pathname, loader=loader) methods = _SpecMethods(spec) if name in sys.modules: module = methods.exec(sys.modules[name]) else: module = methods.load() # To allow reloading to potentially work, use a non-hacked loader which # won't rely on a now-closed file object. module.__loader__ = machinery.SourceFileLoader(name, pathname) module.__spec__.loader = module.__loader__ return module
def load_package(name, path): """**DEPRECATED**""" if os.path.isdir(path): extensions = machinery.SOURCE_SUFFIXES[:] + machinery.BYTECODE_SUFFIXES[:] for extension in extensions: path = os.path.join(path, "__init__" + extension) if os.path.exists(path): break else: raise ValueError("{!r} is not a package".format(path)) spec = util.spec_from_file_location(name, path, submodule_search_locations=[]) methods = _SpecMethods(spec) if name in sys.modules: return methods.exec(sys.modules[name]) else: return methods.load()
def _run_module_code(code, init_globals=None, mod_name=None, mod_spec=None, pkg_name=None, script_name=None): """Helper to run code in new namespace with sys modified""" fname = script_name if mod_spec is None else mod_spec.origin methods = _SpecMethods(mod_spec) module = methods.create() with TempModule(module) as temp_module, _ModifiedArgv0(fname): mod_globals = temp_module.module.__dict__ try: methods.exec(module) except Exception as error: mod_globals['__run_module_error__'] = error # Copy the globals of the temporary module, as they # may be cleared when the temporary module goes away return mod_globals.copy()
def load_package(name, path): """**DEPRECATED**""" if os.path.isdir(path): extensions = (machinery.SOURCE_SUFFIXES[:] + machinery.BYTECODE_SUFFIXES[:]) for extension in extensions: path = os.path.join(path, '__init__'+extension) if os.path.exists(path): break else: raise ValueError('{!r} is not a package'.format(path)) spec = util.spec_from_file_location(name, path, submodule_search_locations=[]) methods = _SpecMethods(spec) if name in sys.modules: return methods.exec(sys.modules[name]) else: return methods.load()
def _init_module_attrs(spec, module): return _SpecMethods(spec).init_module_attrs(module)
def module_from_spec(spec): return _SpecMethods(spec).create()