Я хочу динамически импортировать модуль в Python (3.7), при этом код модуля определяется в строке.
Ниже приведен рабочий пример, в котором используется модуль imp
, который устарел в пользу importlib
(начиная с версии 3.4):
import imp
def import_code(code, name):
# create blank module
module = imp.new_module(name)
# populate the module with code
exec(code, module.__dict__)
return module
code = """
def testFunc():
print('spam!')
"""
m = import_code(code, 'test')
m.testFunc()
В документации Python указано, что вместо imp.new_module()
следует использовать importlib.util.module_from_spec()
. Однако, похоже, нет способа создать пустой объект модуля с помощью модуля importlib
, как я мог бы с imp
.
Как я могу использовать importlib
вместо imp
для достижения того же результата?