Mypy运行速度极慢,目前已知的可能诱发原因都有哪些?
Mypy运行过慢的常见原因排查方向
- 缓存未启用或失效
Mypy默认会生成.mypy_cache目录存储增量检查结果,若当前目录无写入权限、缓存被误删,或配置中开启了--no-incremental参数,每次执行都会全量扫描所有关联文件,哪怕仅几行业务代码也会因扫描依赖库耗时陡增。可执行mypy --show-traceback <目标文件名>查看执行过程中扫描的文件范围,确认是否存在无差别扫描依赖的问题。 - 第三方类型库扫描冗余
Mypy默认会扫描已安装的所有带类型标注(含.pyi桩文件)的第三方库,若本地环境安装了大量第三方包,哪怕代码仅引用其中几个,也可能触发全量扫描。可在项目根目录新增mypy.ini配置,添加follow_imports = skip或指定exclude规则过滤无需扫描的第三方目录,也可添加--no-site-packages参数禁止扫描全局site-packages下的包。 - 配置参数不合理
若开启了--strict、--disallow-untyped-defs等强校验参数,或开启了--warn-unused-ignores、--check-untyped-defs这类需要全量遍历语法树的参数,会大幅提升校验耗时,大项目场景下耗时甚至会翻数倍。可先尝试用mypy --quick <目标文件名>执行快速校验,对比耗时是否有明显下降。 - 环境兼容性问题
部分旧版本Python(如3.8以下版本)和高版本Mypy存在兼容性问题,会触发内部逻辑死循环或冗余遍历。可尝试切换Python虚拟环境测试,或安装经过广泛验证的Mypy稳定版本而非最新版测试,例如pip install mypy==1.4.1。 - 文件系统性能瓶颈
若项目存放在网络共享盘、外接移动存储或加密分区内,Mypy读取文件、写入缓存的IO耗时会大幅上升,哪怕代码量很小也可能出现数十秒的延迟,可将代码复制到本地普通磁盘目录重新测试确认。
内容的提问来源于stack exchange,提问作者Janilson
相关产品推荐
相关产品推荐

