Прежде всего, немного контекста. Я использовал importlib для изменения импорта и пытался найти решение для изменения импортированного файла. Я видел ответ , предлагающий, чтобы для произвольного изменения импортированного модуля вы могли использовать этот код
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', нополучил None, так что я думаю, что spec возвращается, пока существует файл с именем o.xran.