不能。sublime text 本身不执行 mypy,仅通过 sublimelinter + sublimelinter-mypy 插件调用本地 mypy 命令行工具实现类型检查,需确保终端可运行 mypy --version 并正确配置环境变量与工作目录。

Sublime Text 能不能直接跑 mypy?
不能。Sublime Text 本身不执行 mypy,它只是个编辑器;真正做类型检查的是你本地安装的 mypy 命令行工具。Sublime 的作用是把保存/构建动作触发到 mypy,并把错误结果显示在面板里。所以第一步永远是:先确保终端里能跑通 mypy --version。
怎么让 Sublime Text 触发 mypy 检查?
靠 SublimeLinter + SublimeLinter-mypy 插件组合。别装错成其他名字相似的插件(比如 SublimePythonIDE 或纯语法高亮包)。
- 用 Package Control 安装
SublimeLinter(必须先装这个底层框架) - 再装
SublimeLinter-mypy(它会自动调用系统 PATH 里的mypy) - 重启 Sublime Text,打开一个带类型注解的
.py文件,保存时就能看到右下角状态栏提示或侧边栏报错
如果没反应,打开 Tools → SublimeLinter → Show All Errors 看是否真没检测到问题,还是插件根本没启动。
为什么 mypy 报错但 Sublime 不显示?
常见原因就三个:
-
mypy不在系统 PATH:Sublime 启动时读取的是它自己的环境变量,不是你 shell 里配置的。Mac/Linux 可以在~/.zshrc或~/.bash_profile里确认export PATH="$HOME/.local/bin:$PATH"(如果用pip install --user mypy);Windows 用户要检查“系统环境变量”里的 PATH 是否包含 Python Scripts 目录(如C:\Users\XXX\AppData\Roaming\Python\Python311\Scripts) - 项目根目录没放
pyproject.toml或mypy.ini:SublimeLinter-mypy默认只从当前文件所在目录向上找配置文件。如果你的代码在src/子目录里,但配置文件在项目顶层,它可能读不到——要么把配置文件挪到同级,要么在 Sublime 设置里加"working_dir": "${project_path:./}" - 插件配置里关了实时检查:
Preferences → Package Settings → SublimeLinter → Settings,确认"lint_mode": "background"(不是"on_save"或"manual"),否则只在保存时检查,且不会自动弹窗
如何控制 mypy 在 Sublime 里检查哪些文件?
靠 pyproject.toml 的 [tool.mypy] 段控制,不是靠 Sublime 设置。例如:
[tool.mypy] python_version = "3.10" disallow_untyped_defs = true exclude = ["tests/", "migrations/", "venv/"]
注意两点:
-
exclude是正则路径模式,不是 glob;写"tests/"就能排除整个 tests 目录,但"tests/**/*.py"反而无效 - Sublime 不会自动识别
# type: ignore行级忽略——它完全依赖 mypy 原生行为,只要 mypy 命令行能识别的,Sublime 就能显示对应结果
真正容易被忽略的是:Sublime 的 linting 结果只反映当前文件是否被 mypy 扫描到。如果某个 __init__.py 没被任何模块 import,mypy 默认跳过它,Sublime 自然也看不到错误——这不是插件问题,是 mypy 的设计逻辑。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!











