Ruff v0.1.5 现已发布,并支持 Jupyter Notebooks 编辑器。你可以从 PyPI 或你选择的包管理器安装它。
pip install --upgrade ruff
提醒一下:Ruff 是一个用 Rust 编写的极速 Python 代码检查器和格式化工具。Ruff 可以替代 Black、Flake8(以及数十个插件)、isort、pydocstyle、pyupgrade 等工具,而且运行速度比任何单个工具快数十倍乃至数百倍。
在 GitHub 上查看完整的更新日志,或继续阅读亮点内容。
Jupyter Notebooks 编辑器支持 #
Ruff 命令行界面对 Jupyter Notebooks 的支持已在 v0.0.285
中稳定。从那时起,我们一直在扩展 Ruff 语言服务器 (ruff-lsp
),以改进在编辑器中处理 Jupyter Notebooks 的体验。
Ruff VS Code 扩展现在完全支持在 Jupyter Notebooks 中使用 Ruff。升级到最新版本后,Ruff 将为单个单元格和整个 Notebook 提供格式化、代码检查和修复操作,无需额外配置。
功能 #
本节展示了 Jupyter Notebooks 现在支持的各种功能,包括诊断、代码操作和格式化,以及专门针对 VS Code 的额外配置设置。
诊断
Notebook 中的诊断功能与常规 Python 文件中的诊断功能类似:当你打开 Notebook 时,任何代码违规都会立即在编辑器中高亮显示。你可以使用编辑器特定的操作来浏览这些问题。

对于 VS Code 用户,你可以选择使用 ruff.lint.run
选项,在每次按键或保存时刷新诊断信息。
代码操作
所有现有的代码操作都已更新,以便与 Jupyter Notebooks 无缝协作。
此外,与这些代码操作对应的内置 Ruff 命令,例如 Ruff: Organize Imports
和 Ruff: Fix all auto-fixable problems
,都已优化为可对整个 Notebook 进行操作。

对于 VS Code 用户,你可以使用以下设置将 Ruff 配置为在保存时自动修复代码检查违规并组织整个 Notebook 的导入
{
"notebook.codeActionsOnSave": {
"source.fixAll.ruff": true,
"source.organizeImports.ruff": true
}
}
此外,你还可以通过命令面板使用内置的 Fix All
或 Organize Imports
命令对单个单元格执行这些代码操作。

格式化
Ruff 的格式化功能现已可用于 Jupyter Notebooks。你可以使用 VS Code 命令面板中可用的命令来访问这些功能。
Format Cell
:此内置命令用于格式化当前活动的单元格,即选定的单元格或光标所在的单元格。

Ruff: Format Document
:此 Ruff 扩展命令已更新,可格式化整个 Notebook。此外,VS Code 还提供了专门为 Notebook 设计的Notebook: Format Document
命令。

要启用在保存时自动格式化整个 Notebook,请使用以下 VS Code 配置
{
"notebook.formatOnSave.enabled": true,
"[python]": {
"editor.defaultFormatter": "charliermarsh.ruff"
}
}
有关更多配置选项,请参阅扩展文档中的示例配置部分。
要求 #
这些改进需要最新的语言服务器协议 (LSP) 规范 (3.17),其中包含笔记本文档支持,这允许语言服务器在 Jupyter Notebooks 中提供与 Python 文件相同的能力。
截至撰写本文时,VS Code 是唯一兼容的选项,但我们预计其他编辑器将来也会添加支持。
最新版本的 Ruff VS Code 扩展包含适合的 Ruff 和 ruff-lsp
版本。然而,对于其他编辑器,你需要确保安装了支持的 ruff-lsp
版本 (0.0.43
) 和 Ruff 版本 (v0.1.3
或更高版本),这两者都可以使用你偏好的包管理器进行安装。
pip install "ruff>=0.1.3"
pip install "ruff-lsp>=0.0.43"
配置 #
当通过 VS Code 扩展使用 Ruff 时,无需修改你的 Ruff 配置。但是,如果你通过 CLI 使用 Ruff,则需要进行一些更改才能启用 Jupyter Notebook 支持。
具体来说,Ruff 的 CLI 默认排除 Jupyter Notebook 文件,因此你需要通过将 *.ipynb
模式添加到你的 extend-include
来选择启用。
[tool.ruff]
extend-include = ["*.ipynb"]
更多详细信息,请参阅 Jupyter Notebook 发现文档。