ruff在sublime text中必须通过ruff-lsp运行,而非直接调用ruff cli;需先安装lsp插件和ruff-lsp包,配置command路径并启用服务,否则无法实现lint、格式化等lsp功能。

Ruff 在 Sublime Text 里跑不起来,基本不是配置问题,而是缺了 LSP 层——ruff-lsp 必须装,光装 ruff 没用。
Sublime Text 必须装 LSP 插件和 ruff-lsp
Sublime Text 原生不支持语言服务器协议(LSP),所以不能直接调用 ruff CLI。你得先装两个东西:
- 通过 Package Control 安装
LSP插件(官方维护,非第三方 fork) - 再执行
pip install ruff-lsp—— 注意不是ruff,这个包专为编辑器集成编译,带 LSP 入口点 - 重启 Sublime Text 后,在
Command Palette(Ctrl+Shift+P)里搜LSP: Enable Language Server,选ruff-lsp
如果没看到 ruff-lsp 选项,说明 ruff-lsp 没被系统 PATH 识别到。建议用绝对路径启动:在 LSP.sublime-settings 里显式指定 "command": ["/path/to/ruff-lsp"](Linux/macOS 用 which ruff-lsp 查路径,Windows 用 where ruff-lsp)。
ruff-lsp 和 ruff check 的行为差异
命令行 ruff check 默认扫描整个项目,但 ruff-lsp 只检查当前打开的文件,且只报告编辑器光标附近的问题(有缓存和增量分析机制)。这意味着:
- 你在
pyproject.toml里配的exclude(比如["tests/"])依然生效,但ruff-lsp不会主动跳过未打开的测试文件 -
--fix在 LSP 里对应的是 “Quick Fix”(Ctrl+. 触发),它只修当前文件、当前行的可修复项(如F401、UP006),不会批量扫目录 - 如果你在
pyproject.toml里关了某条规则(如ignore = ["E501"]),ruff-lsp实时诊断也会同步忽略,不用额外配 LSP 设置
常见报错:Failed to start ruff-lsp 或无任何提示
这不是 Ruff 本身的问题,90% 是环境隔离导致的路径或 Python 版本错位:
- 确认
ruff-lsp安装在 Sublime Text 调用的 Python 环境里——如果你用uv或虚拟环境管理工具,别只在 shell 里装,得用那个环境的pip装 - Sublime Text 默认用系统 Python(macOS/Linux)或自带 Python(Windows),可能不含
ruff-lsp;可在LSP.sublime-settings中加"python_binary": "/opt/homebrew/bin/python3"显式指定解释器 - 检查
ruff-lsp --help是否能正常输出;如果报ImportError: libz.so.1类错误,说明 Rust 运行时缺失,重装ruff-lsp并确保系统有 zlib-dev 或等效库
和 Pyright / Jedi 等其他 Python LSP 共存时的冲突点
ruff-lsp 只负责 lint 和格式化,不提供补全、跳转或类型推导。但它和 Pyright 一起用时容易打架:
- 两者都可能响应
textDocument/formatting请求,导致保存时格式化两次——在LSP.sublime-settings中给ruff-lsp加"settings": {"format": false},让 Pyright 独占格式化 - 导入排序(
Organize Imports)默认由ruff-lsp提供,但如果你开了isort插件,会重复触发;建议关掉其他 import 工具,统一用[tool.ruff.isort]配置 - hover 提示(悬停看类型)建议只留给 Pyright;可在
ruff-lsp的init_options里设"settings": {"hover": false},避免覆盖
真正麻烦的从来不是怎么配,而是哪个环节用了哪个 Python 环境、哪个 pyproject.toml 被读进了 LSP、以及 ruff-lsp 进程是否真加载了你改过的配置——这些细节不打印日志,只能靠 LSP: Toggle Log Panel 手动翻。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!











