【发布时间】:2019-10-26 17:06:11
【问题描述】:
首先,我使用 importlib 来修改导入并试图找到修改导入文件的解决方案。 我看到一个answer 建议任意修改导入的模块可以使用这段代码
def modify_and_import(module_name, package):
spec = importlib.util.find_spec(module_name, package)
source = spec.loader.get_source(module_name)
new_source = tokens.tokenize(source)
module = importlib.util.module_from_spec(spec)
codeobj = compile(new_source, module.__spec__.origin, 'exec')
exec(codeobj, module.__dict__)
sys.modules[module_name] = module
return module
现在我通过以下调用运行它
o = modify_and_import('o', "./o.xran")
但是,通过 exec 运行它会给我以下错误
AttributeError: 'NoneType' 对象没有属性 'loader'
然后我尝试打印 'spec' 但没有得到所以,我认为 spec 正在返回,而名为 o.xran 的文件存在。
【问题讨论】:
标签: python python-3.x import python-import