Пример #1
0
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
Пример #2
0
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
Пример #3
0
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()
Пример #4
0
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()
Пример #5
0
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()
Пример #6
0
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()
Пример #7
0
 def _init_module_attrs(spec, module):
     return _SpecMethods(spec).init_module_attrs(module)
Пример #8
0
 def module_from_spec(spec):
     return _SpecMethods(spec).create()