设置Visual Studio Code

首先在VS Code中打开一个新项目目录,并在工具和语言下安装Python插件:

Python是一种解释型语言;要运行Python代码,您需要告诉VS Code使用哪个解释器。在VS Code中,通过打开命令面板(macOS上按Cmd + Shift + P),开始输入Python: 选择解释器命令进行搜索,然后选择该命令来选择一个Python 3解释器。

在此阶段,您应该能看到已创建的conda环境。请选择该环境:

Kedro VS Code 扩展

Kedro VS Code 扩展 支持 Kedro 0.19+ 版本。它能帮助您在 Kedro 项目中导航,查找数据集定义,在代码中定位它们的引用等功能。

Kedro VS Code gif

在VS Code中设置venv / virtualenv

我们将向您展示如何让虚拟环境在VS Code的Python解释器中显示。您可以通过打开settings.json并添加以下内容来实现:

"python.venvPath": "/path/containing/your/venvs/"

需要注意的是,如果你在项目目录中创建一个名为venvvenv/virtualenv,VS Code(与PyCharm类似)会自动将其加载为Python解释器(除非你按照上述方式手动将Python解释器定义为其他内容)。

设置任务

这里我们将向您展示如何为Kedro CLI命令设置任务,例如runtestinstallpackage等。

首先,您需要在终端中找到Kedro CLI脚本的路径:

# macOS / Linux
which kedro

# Windows (in **Anaconda Command Prompt**)
where kedro

我们需要您修改您的tasks.json文件。为此,请在菜单栏选择终端 > 配置任务...,然后在编辑器中打开tasks.json文件。按以下内容进行修改:

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // Kedro tasks
    "version": "2.0.0",
    "tasks": [
        {
            "label": "Install",
            "type": "shell",
            "command": "/path/to/kedro/script",
            "args": [
                "install"
            ]
        },
        {
            "label": "Test",
            "group": "test",
            "type": "shell",
            "command": "/path/to/kedro/script",
            "args": [
                "test"
            ]
        },
        {
            "label": "Run",
            "type": "shell",
            "command": "/path/to/kedro/script",
            "args": [
                "run"
            ]
        },

        // This is the default build task
        {
            "label": "Package",
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "type": "shell",
            "command": "/path/to/kedro/script",
            "args": [
                "package"
            ],
            // Will run `Test` before packaging
            "dependsOn": [
                "Test"
            ]
        }
    ]
}

要开始构建,请前往终端 > 运行构建任务...或在macOS上按Cmd + Shift + B。您可以通过前往终端 > 运行并选择要运行的任务来执行其他任务。

设置自定义Kedro项目路径

从Kedro VS Code扩展版本0.3.0开始,您现在可以为您的Kedro项目指定自定义路径。这在以下情况下非常有用:

  • 您的Kedro项目不在工作空间的根目录下

  • 您希望处理当前工作区之外的Kedro项目

  • 您有多个Kedro项目并希望在它们之间切换

使用命令面板设置自定义路径

  1. 通过按下Cmd + Shift + P(macOS)或Ctrl + Shift + P(Windows/Linux)打开命令面板

  2. 输入 Kedro: Set Project Path 并选择它

  3. 输入您的Kedro项目的绝对路径(例如,/Users/username/projects/my-kedro-project

Setting Kedro project path through Command Palette

通过VSCode设置界面自定义路径

  1. 通过按下Cmd + , (macOS) 或 Ctrl + , (Windows/Linux) 来打开 VS Code 设置

  2. 在设置搜索栏中搜索 kedro

  3. 找到 Kedro: Project Path 设置

  4. 在字段中输入您的Kedro项目的绝对路径

Setting Kedro project path through Settings

多根工作区集成

如果您指定的Kedro项目路径不属于当前工作区,该扩展程序会自动将其作为多根工作区的一部分添加到您的工作区中。这使您可以:

  • 在资源管理器中查看项目文件

  • 浏览项目结构

  • 使用所有Kedro扩展功能与指定项目

示例目录结构

如果你的Kedro项目嵌套在其他文件夹中,设置自定义项目路径可以帮助扩展定位它。例如:

root
│   file001.txt
│
└───folder1
│   │   file011.txt
│   │   file012.txt
│   │
│   └───kedroProject  <-- Set this path
│       │   pyproject.toml
│       │   README.md
│       │   ...
│
└───folder2
    │   file020.txt
    │   file021.txt

在这种情况下,您需要将Kedro项目路径设置为kedroProject目录的绝对路径,例如/Users/username/root/folder1/kedroProject

在多个项目间切换

如果您同时处理多个Kedro项目,可以通过更新项目路径设置在不同项目间切换。该扩展会自动检测变更,并重新配置以适配新指定的项目。

故障排除

如果扩展程序在设置自定义路径后无法识别您的Kedro项目:

  1. 确保路径指向一个有效的Kedro项目(包含带有Kedro依赖项的pyproject.toml文件)

  2. 检查路径是否为绝对路径,而非相对路径

  3. 如果更改未生效,请重新加载VS Code。

使用Kedro LSP实现实时目录验证

借助最新的Kedro VS Code扩展,您无需安装额外的YAML插件或模式即可自动检查catalog*.ymlcatalog*.yaml文件。该扩展现在采用语言服务器协议(LSP)方法,在您编辑时捕获配置问题。

工作原理

  • 解析与数据集检查: 该扩展会读取您的目录文件并尝试加载每个数据集,以确保配置正确。

  • 即时反馈: 如果任何数据集类型无效或依赖项缺失,您将在编辑器中看到红色下划线,并在VS Code的问题面板中看到相应条目。

  • 增量与定期验证:该扩展会在您每次打开或编辑文件时重新检查您的目录,同时它也能在后台运行,确保您随时掌握任何潜在问题的最新状态。

在问题面板中查看错误

VS Code的问题面板提供了所有目录问题的便捷概览:

  1. 转到视图 > 问题或按Ctrl+Shift+M(在macOS上按Cmd+Shift+M)。

  2. 展开任何报告的错误以查看问题详情(例如,“找不到类”)。

  3. 点击错误可直接跳转到目录文件中有问题的行。

这简化了在运行任何Kedro流水线之前修复由数据集类型拼写错误或缺失模块等问题引起的数据集错误。

使用Kedro-Viz可视化管道

要在Visual Studio Code中使用Kedro-Viz可视化您的Kedro项目,请按照以下步骤操作:

  1. 打开命令面板: 按下 Cmd + Shift + P (macOS系统) 或 Ctrl + Shift + P (Windows/Linux系统)。

  2. 运行Kedro-Viz: 输入 kedro: Run Kedro Viz 并选择该命令。 这将启动Kedro-Viz并在扩展中可视化展示您的管道。

注意: 在对Kedro项目进行任何更改后,如需更新Kedro-Viz流程图,请按Cmd + Shift + P打开VSCode命令面板,然后查找kedro: restart server

导航至节点函数: 在Kedro-Viz流程图中点击某个节点,它将自动跳转到代码中对应的节点函数位置。 navigation to node function

导航至数据目录: 点击流程图中的数据节点将在数据目录中打开对应的数据集。 navigation to dataset

调试

要进行调试,您可能需要在项目根目录下创建一个.env文件。将./src/文件夹的完整路径添加到.env文件中的PYTHONPATH环境变量:

In macOS / Linux:
PYTHONPATH=/path/to/project/src:$PYTHONPATH

# In Windows
PYTHONPATH=C:/path/to/project/src;%PYTHONPATH%

您可以在VS Code文档中找到有关设置环境变量的更多信息

点击左侧活动栏中的运行和调试图标(macOS系统按Cmd + Shift + D)。如果没有现有配置,点击创建launch.json文件;否则点击左上角的下拉箭头(如下所示)并选择添加配置

注意

如果遇到以下错误:Cannot read property 'openConfigFile' of undefined,你可以手动在.vscode目录中创建launch.json文件,并粘贴下方的配置内容。

编辑在编辑器中打开的launch.json文件,内容如下:

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python: Kedro Run",
            "type": "python",
            "request": "launch",
            "console": "integratedTerminal",
            "module": "kedro",
            "args": ["run"]
            // Any other arguments should be passed as a comma-seperated-list
            // e.g "args": ["run", "--pipeline", "pipeline_name"]
        }
    ]
}

要在你的pipeline.py脚本中添加断点,例如,点击代码行的左侧:

点击左侧面板上的Debug按钮:

然后选择调试配置 Python: Kedro Run 并点击 Debug (绿色播放按钮):

执行应在断点处停止:

高级:远程解释器调试

可以使用VS Code进行远程调试。以下示例假设在运行待调试代码的远程计算机(运行类Unix操作系统)上可进行SSH访问。

首先在本地和远程计算机上使用以下命令安装ptvsd Python库(在适当的conda环境中在两台计算机上执行此命令):

python -m pip install --upgrade ptvsd

按照上述调试部分的说明前往调试器配置。将以下内容添加到launch.json文件中的configurations数组:

{
    "name": "Kedro Remote Debugger",
    "type": "python",
    "request": "attach",
    "pathMappings": [
        {
            // You may also manually specify the directory containing your source code.
            "localRoot": "${workspaceFolder}",
            "remoteRoot": "/path/to/your/project"
        }
    ],
    "port": 3000,  // Set to the remote port.
    "host": "127.0.0.1"  // Set to your remote host's public IP address.
}

remoteRoot路径更改为远程计算机上项目的路径。打开文件src//__main__.py并在顶部附近输入以下内容:

import ptvsd

# Allow other computers to attach to ptvsd at this IP address and port.
ptvsd.enable_attach(address=("127.0.0.1", 3000), redirect_output=True)

# Pause the program until a remote debugger is attached
print("Waiting for debugger to attach...")
ptvsd.wait_for_attach()

确保两台计算机(您正在使用的计算机和执行代码的远程计算机)拥有相同的源代码。例如,您可以使用scp来同步代码:

scp -r <project_root> <your_username>@<remote_server>:projects/

❗上述示例假设远程计算机用户主目录下存在一个名为projects的目录。项目文件将被复制到该目录中。可以按照前文所述将其设置为部署任务:

// Add to `tasks` array in `tasks.json`
{
    "label": "Deploy",
    "type": "shell",
    "command": "scp -r <project_root> <your_username>@<remote_server>:projects/",
}

开始在远程计算机上执行管道:

while :; do kedro run; done

您将在终端中看到以下消息,执行将停止:

Waiting for debugger to attach...

打开一个新的终端会话,并创建一个从本地计算机到远程计算机的SSH隧道(保持此进程运行):

ssh -vNL 3000:127.0.0.1:3000 <your_username>@<remote_server>

转到VS Code中的调试部分,选择新创建的远程调试器配置文件:

您必须按照上述调试章节所述在VS Code中设置断点,并通过点击绿色播放三角形启动调试器:

查找有关在VS Code中调试的更多信息