Тест всегда будет успешным.
ьзование устаревшего модуляimp
Я могу написать пользовательский хук импорта, который изменяет исходный код модуля на лету, до импорта / выполнения Python. Учитывая исходный код в виде строки с именемsource
ниже необходим код, необходимый для создания модуля:
module = imp.new_module(name)
sys.modules[name] = module
exec(source, module.__dict__)
посколькуimp
устарела, я хотел бы сделать что-то подобное сimportlib
, [Редактировать: есть другиеimp
методы, которые необходимо заменить для создания пользовательского хука импорта - поэтому я ищу ответ не просто на замену приведенного выше кода.]
Тем не менее, я не смог понять, как это сделать.importlib документация имеетфункция для создания модулей из "спецификации" Которые, насколько я могу судить, являются объектами, которые включают свои собственные загрузчики без очевидного способа переопределить их, чтобы иметь возможность создавать модуль из строки.
Я создалминимальный пример чтобы продемонстрировать это; см. файл readme для деталей.