跳到内容

IDE 配置

正确使用和配置集成开发环境 (IDE) 将帮助您更高效地使用 Polars。本页包含一些配置流行 IDE 的建议。

Visual Studio Code

请务必将 VSCode 配置为使用 Makefile 创建的虚拟环境。

扩展

推荐以下扩展。

rust-analyzer

如果您编写 Rust 代码,您将需要 rust-analyzer 扩展。此扩展为 Rust 代码提供代码补全功能。

为了使其在 Polars 代码库中良好运行,请将以下设置添加到您的 .vscode/settings.json

{
  "rust-analyzer.cargo.features": "all",
  "rust-analyzer.cargo.targetDir": true
}

Ruff

Ruff 扩展将帮助您符合 Python 代码的格式要求。我们使用 Ruff 的 linter 和 formatter。建议将此扩展配置为使用您环境中安装的 Ruff。这将确保它使用正确的 Ruff 版本和配置。

{
  "ruff.importStrategy": "fromEnvironment"
}

CodeLLDB

CodeLLDB 扩展对于调试 Rust 代码很有用。您也可以调试从 Python 调用(请参阅下文)的 Rust 代码。

调试

由于 Python 和 Rust 的互操作方式,从 Python 调用调试 Rust 侧的开发可能会很困难。本指南将展示如何设置调试环境,使从 Python 脚本调用的 Rust 代码调试变得轻松。

准备

首先安装 CodeLLDB 扩展(见上文)。然后将以下两个配置添加到您的 launch.json 文件中。此文件通常位于项目根目录的 .vscode 文件夹中。有关 launch.json 文件的更多信息,请参阅 VSCode 官方文档

launch.json
{
  "configurations": [
    {
      "name": "Debug Rust/Python",
      "type": "debugpy",
      "request": "launch",
      "program": "${workspaceFolder}/py-polars/debug/launch.py",
      "args": [
        "${file}"
      ],
      "console": "internalConsole",
      "justMyCode": true,
      "serverReadyAction": {
        "pattern": "pID = ([0-9]+)",
        "action": "startDebugging",
        "name": "Rust LLDB"
      }
    },
    {
      "name": "Rust LLDB",
      "pid": "0",
      "type": "lldb",
      "request": "attach",
      "program": "${workspaceFolder}/py-polars/.venv/bin/python",
      "stopOnEntry": false,
      "sourceLanguages": [
        "rust"
      ],
      "presentation": {
        "hidden": true
      }
    }
  ]
}

信息

在某些系统上,除非禁用 ptrace 保护,否则 LLDB 调试器将无法附加。要禁用此功能,请运行以下命令

echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope

运行调试器

  1. 创建一个包含 Polars 代码的 Python 脚本。确保您的虚拟环境已激活。

  2. 在任何 .rs.py 文件中设置断点。

  3. 在左侧的 运行和调试 面板中,从顶部的下拉菜单中选择 Debug Rust/Python,然后点击 开始调试 按钮。

此时,您的调试器应在代码库中任何 .rs 文件中的断点处停止。

详情

此调试功能通过上面所示的特殊设计的 VSCode 启动配置运行。初始 Python 调试器使用位于 py-polars/debug/launch.py 的特殊启动脚本启动,并将要调试的脚本(目标脚本)名称作为输入参数传递。启动脚本确定进程 ID,将此值写入 launch.json 配置文件,编译目标脚本并在当前环境中运行它。此时,第二个(Rust)调试器附加到 Python 调试器。结果是两个同时运行的调试器在同一个运行实例上操作。Python 代码中的断点将由 Python 调试器停止,Rust 代码中的断点将由 Rust 调试器停止。

JetBrains (PyCharm, RustRover, CLion)

信息

需要更多信息。