sublime text中mypy不报错是因为未正确配置触发机制,需安装sublimelinter-mypy并启用lint_mode,同时确保mypy已全局安装且配置文件路径格式正确。

Sublime Text里MyPy不报错?先确认它真在运行
很多人配完发现mypy没反应,不是插件装错了,而是根本没触发检查。Sublime Text本身不自动调用mypy,必须靠SublimeLinter-mypy或自定义构建系统来驱动。
常见错误现象:
- 保存文件后行号旁没红色波浪线
- 右键菜单里找不到“Run MyPy”选项
- 终端手动跑
mypy foo.py能报错,但Sublime里安静如鸡
实操建议:
- 用
Package Control安装SublimeLinter和SublimeLinter-mypy,别只装一个 - 确保系统已全局安装
mypy:pipx install mypy(推荐)或pip install mypy - 检查
SublimeLinter是否启用:菜单 → Preferences → Package Settings → SublimeLinter → Settings,确认"lint_mode": "load_save"或"on_save"已开启 - 如果用
LSP+pylsp,需额外在pylsp配置中启用mypy插件,并安装python-lsp-server[all]
MyPy配置文件不生效?路径和格式都得对上
mypy默认只认pyproject.toml(v1.0+)、mypy.ini、.mypy.ini三种名字,且按从当前工作目录向上逐级查找,找到第一个就停——所以项目根目录放错位置,配置就白写。
实操建议:
- 优先用
pyproject.toml,把配置放在[tool.mypy]段下,不是[mypy]或[tool] - 运行
mypy --show-config确认它实际加载了哪个文件、哪些参数 - 避免在
~/.mypy.ini全局配置——不同项目Python版本可能冲突,容易导致list[str]语法被拒 - 测试配置是否起作用:加一行
disallow_untyped_defs = true,然后写个没注解的函数,看是否报错
第三方库报“Module has no attribute”?别急着ignore
看到error: Module has no attribute "xxx",第一反应不是加# mypy: ignore-errors,而是判断是不是库本身没类型提示。
实操建议:
- 先查有没有对应的
types-xxx包,比如requests就装pip install types-requests - 若要忽略整个库,在
pyproject.toml里加:
[tool.mypy.overrides] module = "requests.*" ignore_missing_imports = true
- 单个文件忽略用
# mypy: ignore-errors放文件首行;单行忽略用# type: ignore[attr-defined] - 慎用
follow_imports = "silent"——它会让类型推导链断裂,表面安静,实际埋雷
CI里MyPy报错本地却正常?环境和路径是关键
CI失败但本地通过,八成是python_version不一致或工作目录不对。CI里mypy .可能扫到不该扫的目录,而本地是在项目根目录运行的。
实操建议:
- CI命令改用
mypy --show-traceback --no-error-summary src/ tests/,明确指定路径,避免误扫 - 确保CI使用的Python版本与
pyproject.toml中python_version = "3.10"严格一致 - CI脚本开头加
cd $PROJECT_ROOT,保证工作目录和本地一致 - CI里加
mypy --show-config | grep python_version验证配置是否被正确读取
最常被忽略的是:Sublime里看到的报错是SublimeLinter-mypy基于当前视图文件触发的,而CI跑的是整个src/目录——两者检查范围不同,问题可能藏在没打开的文件里。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!











