Python跨文件使用TypedDict时mypy不触发类型错误如何解决?
问题原因
你的配置中ignore_missing_imports = True加上没有将本地的config包标记为支持类型检查的包,导致mypy导入BaseConfig时无法读取到对应的类型定义,直接将其识别为Any类型,自然不会触发TypedDict的相关校验。
解决方案
- 第一步:在
config目录下新增两个空文件:__init__.py:标记目录为Python包(Python 3.3+命名空间包可省略,建议加上避免兼容问题)py.typed:遵循PEP 561规范,标记当前包为支持类型检查的包,mypy会优先读取该包内的类型定义
- 第二步:修改
mypy.ini配置,关闭全局的ignore_missing_imports,仅对需要忽略的第三方无类型包单独配置规则:[mypy] python_version = 3.9 check_untyped_defs = True ignore_missing_imports = False # 关闭全局忽略 exclude = 'venv/' # 示例:对特定第三方包单独开启忽略 # [mypy-third_pkg_name.*] # ignore_missing_imports = True - 第三步:运行mypy检查时,建议指定项目根目录而非单个文件,确保mypy可以关联到所有依赖的类型定义:
# 在项目根目录执行 mypy .
修改完成后重新运行检查,跨文件的TypedDict多余键、缺少键的校验就会正常生效。
内容的提问来源于stack exchange,提问作者dcsan
相关产品推荐
相关产品推荐

