使用 importlib 创建的模块的类型(对于 mypy)是什么?

What is the type (for mypy) of a module created with importlib?

我正在使用 importlib 加载模块:

from importlib.machinery import SourceFileLoader
from importlib.util import spec_from_loader, module_from_spec
from pathlib import Path
from typing import Union

PathStr = Union[Path, str]

def load_module(module_path:PathStr, module_name="module"):
    """Load and return a module"""
    loader = SourceFileLoader(module_name, module_path)
    spec = spec_from_loader(loader.name, loader)
    module = module_from_spec(spec)
    loader.exec_module(module)
    return module

函数返回的模块类型是什么?我想不通。

这个类似的答案说明了一切:

这是 importlib.import_module 的持久性 information:The 类型注释的摘要 returns types.ModuleType

来自the typeshed source

def import_module(name: str, package: Optional[str] = ...) -> types.ModuleType: ...

...然后解决方案的作者提供了一些建议来帮助mypy