inspect.getmodule возвращает None для перехватчиков импорта

Я создаю модуль времени выполнения в моем коде Python, похожий на

string_code = """
import existing_module

a = "my_string"
existing_module.register(a)
"""

mod = ModuleType("mymodule")
sys.modules["mymodule"] = mod
exec(string_code, mod.__dict__)

Внутри existing_module у меня есть код, который проверяет, является ли вызывающий модуль модулем

def register(a: str):
    caller = inspect.stack()[1]
    caller_module = inspect.getmodule(caller[0])
    assert caller_module is not None

Поскольку я вызываю существующий_модуль из модуля времени выполнения, я ожидал, что caller_module не будет None. Однако я настаиваю на этом утверждении. Не знаю почему.

Кто-нибудь может помочь?

0 ответов

Другие вопросы по тегам