引言:Python代码工具的“文艺复兴”
长期以来,Python开发者们为了保证代码质量和风格统一,不得不依赖一个“工具全家桶”:
- 用 Flake8 或 Pylint 来检查代码中的逻辑错误和不规范写法 (Linting)。
- 用 isort 来自动排序
import
语句。 - 用 Black 来自动格式化代码,确保风格一致。
- …可能还有
pyupgrade
等其他工具。
这套组合虽然能用,但有几个痛点:
- 慢:这些工具都是用Python写的,在大型项目上运行时,检查和格式化可能需要数秒甚至更久。
- 配置繁琐:你需要分别安装和配置每一个工具,并处理它们之间可能存在的冲突。
Ruff 的出现,彻底改变了这一局面。它是一个用Rust语言编写的、集多种功能于一身的超级工具。
为什么选择Ruff?
- 快到离谱:Ruff的速度比现有的工具链快10-100倍。Linting和格式化几乎是瞬时完成,毫秒级响应。
- 功能合一:它同时实现了Linter(代码检查)和Formatter(代码格式化)的功能,可以完全替代Flake8, isort, Black, pydocstyle等数十个工具。
- 配置简单:一个
ruff.toml
或pyproject.toml
文件就能搞定所有配置。 - 兼容性好:它致力于与Black风格兼容,迁移成本极低。
步骤1:安装Ruff
首先,你需要在你的Python环境中安装Ruff。推荐在每个项目的虚拟环境中单独安装。
pip install ruff
步骤2:在VS Code中安装Ruff插件
- 打开VS Code。
- 进入扩展(Extensions)视图(快捷键
Ctrl+Shift+X
)。 - 搜索"Ruff"。
- 找到由charliermarsh发布的官方插件,点击安装。
步骤3:配置VS Code实现“保存时自动操作”
这是提升幸福感的关键一步。我们希望在按下Ctrl+S
保存文件时,Ruff能自动帮我们修复错误并格式化代码。
-
打开VS Code的设置(Settings)(快捷键
Ctrl+,
),选择“打开设置(JSON)” (Open Settings (JSON))。 -
在打开的
settings.json
文件中,添加或修改以下配置:{ // ... 其他你的设置 ... "[python]": { // 设置Ruff为默认的格式化工具 "editor.defaultFormatter": "charliermarsh.ruff", // 开启保存时自动格式化 "editor.formatOnSave": true, // 开启保存时自动修复错误 (比如自动移除未使用的import) "editor.codeActionsOnSave": { "source.fixAll.ruff": "explicit" } }, // 如果你希望Ruff接管Jupyter Notebook中的格式化 "[jupyter]": { "editor.defaultFormatter": "charliermarsh.ruff", "editor.formatOnSave": true, "editor.codeActionsOnSave": { "source.fixAll.ruff": "explicit" } } }
配置解读:
editor.defaultFormatter
: 告诉VS Code,对于Python文件,请使用Ruff插件来进行格式化。editor.formatOnSave
: 开启“保存时格式化”功能。editor.codeActionsOnSave
: 这是一个更强大的功能。"source.fixAll.ruff": "explicit"
表示在保存时,执行Ruff提供的“全部修复”操作。这不仅包括格式化,还包括自动移除未使用的导入、自动合并可以合并的import
语句等Lint修复。
步骤4:为你的项目配置Ruff (可选但推荐)
虽然Ruff开箱即用,但通过一个配置文件,你可以进行更细致的定制。在你的项目根目录下,创建一个pyproject.toml
文件(这是现代Python项目推荐的配置文件格式),并添加Ruff的配置:
# pyproject.toml
[tool.ruff]
# 设置代码每行的最大长度
line-length = 88
# 指定要兼容的Python版本
target-version = "py39"
[tool.ruff.lint]
# 选择要启用的规则集。'E'和'F'是Flake8的规则(错误和逻辑问题)
# 'I'是isort的规则(import排序)
select = ["E", "F", "I"]
# 你可以忽略特定的规则
# ignore = ["F401"] # 例如,如果你想忽略“未使用的导入”错误
# 自动修复这些规则
fixable = ["ALL"]
[tool.ruff.format]
# Ruff的格式化工具目前是预览版,需要显式开启
# 它致力于与Black兼容
preview = true
有了这个文件,Ruff插件和命令行工具都会自动读取它,确保在任何地方(VS Code、CI/CD流水线)的行为都保持一致。
见证效果
现在,回到你的任何一个Python文件。
- 实时错误提示:如果你写了一段不符合规范的代码(比如一个未使用的变量),Ruff会立刻用波浪线标出,鼠标悬浮即可看到错误信息。
- 保存即格式化:试着把你的
import
语句顺序打乱,或者写一些缩进不正确的代码。按下Ctrl+S
,代码会在瞬间被整理得井井有条。
总结
从多个工具的繁琐配置和缓慢等待,到单一工具的极速响应和简单配置,Ruff为Python开发体验带来了质的飞跃。通过在VS Code中正确配置Ruff,你可以将代码质量控制无缝地融入到编码的每一个瞬间,让你更专注于业务逻辑的实现,而不是代码风格的细枝末节。
...