如何配置mypy忽略dnspython中query模块的存根文件?
关于dnspython存根文件缺失
inbound_xfr导致mypy报错的问题解决 1. 这确实是dnspython的bug
dnspython的dns.query模块中实际存在inbound_xfr函数,但对应的类型存根文件query.pyi没有定义这个属性——这种存根文件与实际代码不一致的情况,属于dnspython的类型定义遗漏问题。你可以在dnspython的官方代码仓库提交issue反馈该问题,维护者通常会修复这类存根缺失的问题。
2. 配置mypy忽略特定模块的存根文件
有几种可行的解决方式:
- 临时绕过单条报错:在报错代码行末尾添加注释,直接忽略该类型检查错误:
dns.query.inbound_xfr("10.0.0.1", zone) # type: ignore[attr-defined] - 通过配置文件排除存根:在项目根目录的
mypy.ini或pyproject.toml中添加规则,指定忽略dns/query.pyi存根文件:
若使用mypy.ini:
若使用[mypy] exclude = .*/dns/query\.pyi$pyproject.toml:[tool.mypy] exclude = [".*/dns/query\\.pyi$"] - 命令行参数排除:运行mypy时直接通过参数指定排除目标存根:
mypy --exclude 'dns/query\.pyi' your_script.py
注意:排除存根文件后,mypy会直接解析query.py源码做类型推断,可能因源码缺少类型注解导致部分检查精度下降,但能解决当前的报错问题。
内容的提问来源于stack exchange,提问作者Martin
相关产品推荐
相关产品推荐

