Skip to content

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 和格式化工具。建议配置扩展以使用您环境中安装的 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. 在左侧的Run and Debug面板中,从顶部的下拉菜单中选择Debug Rust/Python,然后点击Start Debugging按钮。

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

详情

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

JetBrains (PyCharm, RustRover, CLion)

信息

需要更多信息。