如何使用imp导入Importlib重写代码

时间:2018-10-10 22:08:07

标签: python python-3.x python-importlib

我使用imp库(简化了)这段代码:

fp, pathname, description = imp.find_module(site_init_modname, [site_dir])
m = sys.modules['SCons.Script']
sfx = description[0]
modname = os.path.basename(pathname)[:-len(sfx)]
site_m = {"__file__": pathname,
          "__name__": modname,
          "__doc__": None}
re_special = re.compile("__[^_]+__")
for k in list(m.__dict__.keys()):
    if not re_special.match(k):
        site_m[k] = m.__dict__[k]
exec(compile(fp.read(), fp.name, 'exec'), site_m)

因为imp库已经是deprecated,所以我想使用importlib重写这段代码。我尝试过这样的事情:

spec = importlib.util.spec_from_file_location(site_init_modname, site_init_file)
m = sys.modules['SCons.Script']
mod = importlib.util.module_from_spec(spec)
mod.loader.exec_module(mod)

但是,这显然是错误的,因为应该在exec_module命名空间中完成SCons.Script。知道如何正确执行吗?

0 个答案:

没有答案