mypy必须安装在当前项目Python虚拟环境中,VSCode通过手动配置的绝对路径调用它,且需关闭Pylance类型检查以避免干扰;其参数须为JSON数组格式,重启VSCode后右下角应显示mypy标识。

mypy 不是 VSCode 插件,而是独立的 Python 工具——装错地方、配错路径、被 Pylance 挡掉,都会让你以为“装了但没用”。
mypy 必须装在当前 Python 环境里,不是全局或 VSCode 里
VSCode 本身不运行 mypy,它只是调用你项目所用 Python 解释器环境里的 mypy 可执行文件。
所以:
- 打开终端,先确认当前工作区激活的是正确的 Python 环境(比如
./venv/bin/python) - 运行:
pip install mypy—— 必须在这同一个环境下执行 - 验证安装成功:
which mypy(macOS/Linux)或where mypy(Windows),输出路径必须指向你的虚拟环境,例如:./venv/bin/mypy或./venv/Scripts/mypy.exe - 如果返回空,说明装到了系统 Python 或别的环境,得先
source venv/bin/activate(Linux/macOS)或venv\Scripts\activate(Windows)再装
别信“pip install mypy”跑完就万事大吉——路径不对,VSCode 根本找不到它。
VSCode 设置里必须手动填 mypy 路径,不能靠自动发现
VSCode 的 Python 扩展不会自动扫描所有环境找 mypy,尤其当你有多个 venv、conda、pyenv 时,极易选错。
- 打开 VSCode 设置(
Cmd+,或Ctrl+,) - 搜索关键词:
mypy path - 找到设置项:
MyPy: Executable Path - 填入刚才
which mypy返回的绝对路径(不是相对路径,不是mypy命令名) - 路径含空格或中文?立刻换到纯英文路径重装,否则解析失败且无提示
这个字段一旦留空,VSCode 就会静默 fallback 到系统路径(甚至找不到),而你完全不知道。
立即学习“Python免费学习笔记(深入)”;
python.linting.mypyArgs 必须是 JSON 数组,拼字符串就失效
很多配置看着像对了,实际根本没传参给 mypy,因为格式错了:
- 正确写法(
settings.json中):"python.linting.mypyArgs": ["--strict", "--python-executable", "./venv/bin/python"]
- 错误写法(VSCode 直接忽略整个配置):
"--strict --python-executable ./venv/bin/python"["--strict --python-executable ./venv/bin/python"]
关键点:
- 每个参数单独一项,包括
--python-executable和它的值 -
--python-executable必须指定,否则mypy可能用系统 Python 解析,找不到你项目里装的包或 stub - 别加
--file、--follow-imports:VSCode 自己控制检查范围,硬加反而干扰
关掉 Pylance 类型检查,否则你看不到 mypy 报错
Pylance 默认开着,它也会标红类型问题,但它和 mypy --strict 完全是两套规则:
-
Pylance不检查reportMissingTypeStubs,不强制函数注解,也不报reportUntypedClass - 你看到“没报错”,可能只是
Pylance放过了,而mypy其实根本没跑起来
解决办法二选一:
- 把
python.languageServer设为None(最干净) - 或把
python.analysis.typeCheckingMode设为"off",避免双服务器打架
改完必须 重启 VSCode 窗口,然后看右下角状态栏是否显示 mypy(不是 Pylance 或 Default)。
真正卡住人的从来不是“怎么装”,而是“装在哪”“VSCode 调的是哪个”“谁在抢着报错”。路径、数组格式、Pylance 干扰这三点漏一个,mypy 就等于没开。


















