Pylance + Pyrefly:将你偏好的类型检查器引入 Visual Studio Code

Pylance + Pyrefly:将你偏好的类型检查器引入 Visual Studio Code

💡 原文英文,约1000词,阅读约需4分钟。
📝

内容提要

微软发布类型服务器协议(TSP),扩展LSP,使Pylance与类型检查器解耦,Pyright仍为默认。微软与Meta合作让Pyrefly接入Pylance,保留补全、环境管理及GitHub Copilot集成。用户可在VS Code设置或状态栏切换诊断源,需Pylance 2026.4.1以上、Pyrefly 0.60.0以上。

🔎

延伸解读

TSP 解耦 Pylance 与类型检查器

微软推出的类型服务器协议(TSP)扩展了 LSP,使 Pylance 不再与 Pyright 紧密耦合。Pylance 成为 VS Code 的 Python 智能层,类型检查器变为可互换的静态分析组件。Pyright 仍是默认选项,但开发者现在可以从状态栏或设置中切换诊断源,无需牺牲补全、环境管理或 GitHub Copilot 集成。

Pyrefly 接入的实际影响

通过与 Meta 合作,Pyrefly 成为 Pylance 可选的诊断引擎。Pyrefly 在大型代码库(如 Instagram)上经过验证,检查速度达每秒 180 万行,并在 AI/ML 库类型支持上有优势。对于偏好 Pyrefly 或代码库更适合它的开发者,现在可以在保留 Pylance 全部功能的同时使用 Pyrefly 的类型分析。

切换方式与版本要求

用户可通过三种方式切换诊断源:打开工作区时自动检测 Pyrefly 安装并提示切换;在设置中手动选择“Pylance + Pyrefly”;或点击状态栏的诊断源指示。需注意,此功能要求 Pylance 2026.4.1 以上、Pyrefly 0.60.0 以上。设置中还可固定 Pyrefly 版本或指定本地可执行文件。

为何通过 Pylance 使用 Pyrefly

Pyrefly 本身已有 VS Code 扩展,但通过 Pylance 使用可获得独立扩展无法复制的深度集成:为 AI 补全提供上下文、为 Copilot Chat 提供代码理解、MCP 工具等。这种分离让 Pylance 专注智能层,类型检查交由专业引擎,开发者无需在功能与检查器之间二选一。

❓

Q&A

什么是类型服务器协议(TSP)?它和LSP有什么关系?

TSP是微软发布的一种开放标准,它扩展了语言服务器协议(LSP),旨在让任何编辑器或工具都能将类型检查器作为一等后端集成。TSP在Pylance和Pyright之间实现了清晰的分离,使Pylance成为VS Code的Python智能层,而类型检查器则成为可互换的静态分析组件。

如何在VS Code中切换到Pyrefly作为类型检查器?

可以通过三种方式切换:1) 自动检测:打开工作区时,如果Pylance在Python环境中发现Pyrefly安装(通过虚拟环境或pyrefly.toml/pyproject.toml配置),会弹出通知,点击“Switch to Pyrefly”即可;2) 手动设置:在VS Code设置中,找到“Python › Analysis: Diagnostics Source”,从下拉菜单中选择“Pylance + Pyrefly”;3) 状态栏:激活后,状态栏会显示“Diagnostics Source: Pylance + Pyrefly”,点击可打开设置。

使用Pylance + Pyrefly与单独使用Pyrefly扩展有什么区别?

通过Pylance使用Pyrefly可以保留Pylance的深度集成功能,如GitHub Copilot的上下文提供、智能代码理解、MCP工具等,这些是独立类型检查器扩展无法复制的。Pylance作为AI感知的智能层,而Pyrefly负责类型分析,两者结合无需取舍。

使用Pylance + Pyrefly需要满足哪些版本要求?

需要Pylance版本2026.4.1或更高,以及Pyrefly版本0.60.0或更高。

微软与Meta合作将Pyrefly引入Pylance的背景是什么?

微软与Meta合作设计和实现TSP协议,并确保Pyrefly完全支持它。双方共同认为Python生态更受益于互操作性而非碎片化。Meta在快速静态类型分析和AI/ML库支持方面有深厚 expertise,自2017年以来一直在解决大规模类型检查问题(如Instagram),而微软提供VS Code IDE集成层和GitHub Copilot体验。

切换到Pyrefly后,Pylance的哪些功能保持不变?

无论使用哪种类型检查器,Pylance的代码补全、快速信息、环境管理以及与GitHub Copilot的深度集成都保持不变。这些体验构建在Pylance之上,而不是依赖于特定的类型检查器。

🏷️

标签

➡️

继续阅读