Kedro命令行界面

Kedro的命令行界面(CLI)用于通过终端shell(如macOS上的终端应用,或Windows上的cmd.exe或PowerShell)向Kedro发送命令。您需要使用CLI来设置新的Kedro项目并运行它。

自动补全(可选)

如果您使用的是macOS或Linux系统,可以配置您的shell环境以实现kedro命令的自动补全功能。若不确定当前使用的shell类型,请先输入以下命令:

echo $0
If you are using Bash (click to expand)
Add the following to your ~/.bashrc (or just run it on the command line):
eval "$(_KEDRO_COMPLETE=bash_source kedro)"
If you are using Z shell (ZSh) (click to expand)
Add the following to ~/.zshrc:
eval "$(_KEDRO_COMPLETE=zsh_source kedro)"
If you are using Fish (click to expand)
Add the following to ~/.config/fish/completions/foo-bar.fish:
eval (env _KEDRO_COMPLETE=fish_source kedro)

从Python调用Kedro CLI(可选)

你可以将Kedro CLI作为Python模块调用:

python -m kedro

Kedro命令

以下是Kedro CLI命令列表,作为下方描述的快捷方式。项目特定命令需在项目目录内调用,仅适用于该特定项目。全局命令可在任意位置运行,不针对任何特定项目:

全局Kedro命令

以下是Kedro的全局命令,可以在任何目录位置运行。

注意

你只需要使用下面给出的其中一个选项(例如指定 kedro -V kedro --version)。

获取Kedro命令帮助

kedro
kedro -h
kedro --help

确认Kedro版本

kedro -V
kedro --version

确认Kedro信息

kedro info

返回类似以下的输出,具体取决于所使用的Kedro版本和已安装的插件。

 _            _
| | _____  __| |_ __ ___
| |/ / _ \/ _` | '__/ _ \
|   <  __/ (_| | | | (_) |
|_|\_\___|\__,_|_|  \___/
v0.19.13

Kedro is a Python framework for
creating reproducible, maintainable
and modular data science code.

Installed plugins:
kedro_viz: 10.1.0 (entry points:global,hooks,line_magic)

创建一个新的Kedro项目

kedro new

自定义或覆盖项目特定的Kedro命令

注意

所有与项目相关的CLI命令都应从项目的根目录运行。

Kedro的命令行界面(CLI)允许你将一组命令和依赖项与目标关联,然后你可以在项目目录内执行这些命令。

项目支持的命令是在框架层面定义的。如果你想自定义任何Kedro命令,可以通过添加名为cli.py的文件,或者通过plugin框架注入命令来实现。以下是cli.py文件的模板。

Click to expand
"""Command line tools for manipulating a Kedro project.
Intended to be invoked via `kedro`."""
import click
from kedro.framework.cli.project import (
    ASYNC_ARG_HELP,
    CONFIG_FILE_HELP,
    CONF_SOURCE_HELP,
    FROM_INPUTS_HELP,
    FROM_NODES_HELP,
    LOAD_VERSION_HELP,
    NODE_ARG_HELP,
    PARAMS_ARG_HELP,
    PIPELINE_ARG_HELP,
    RUNNER_ARG_HELP,
    TAG_ARG_HELP,
    TO_NODES_HELP,
    TO_OUTPUTS_HELP,
)
from kedro.framework.cli.utils import (
    CONTEXT_SETTINGS,
    _config_file_callback,
    _split_params,
    _split_load_versions,
    env_option,
    split_string,
    split_node_names,
)
from kedro.framework.session import KedroSession
from kedro.utils import load_obj


@click.group(context_settings=CONTEXT_SETTINGS, name=__file__)
def cli():
    """Command line tools for manipulating a Kedro project."""


@cli.command()
@click.option(
    "--from-inputs", type=str, default="", help=FROM_INPUTS_HELP, callback=split_string
)
@click.option(
    "--to-outputs", type=str, default="", help=TO_OUTPUTS_HELP, callback=split_string
)
@click.option(
    "--from-nodes", type=str, default="", help=FROM_NODES_HELP, callback=split_node_names
)
@click.option(
    "--to-nodes", type=str, default="", help=TO_NODES_HELP, callback=split_node_names
)
@click.option("--nodes", "-n", "node_names", type=str, multiple=True, help=NODE_ARG_HELP)
@click.option(
    "--runner", "-r", type=str, default=None, multiple=False, help=RUNNER_ARG_HELP
)
@click.option("--async", "is_async", is_flag=True, multiple=False, help=ASYNC_ARG_HELP)
@env_option
@click.option("--tags", "-t", type=str, multiple=True, help=TAG_ARG_HELP)
@click.option(
    "--load-versions",
    "-lv",
    type=str,
    multiple=True,
    help=LOAD_VERSION_HELP,
    callback=_split_load_versions,
)
@click.option("--pipeline", "-p", type=str, default=None, help=PIPELINE_ARG_HELP)
@click.option(
    "--config",
    "-c",
    type=click.Path(exists=True, dir_okay=False, resolve_path=True),
    help=CONFIG_FILE_HELP,
    callback=_config_file_callback,
)
@click.option(
    "--conf-source",
    type=click.Path(exists=True, file_okay=False, resolve_path=True),
    help=CONF_SOURCE_HELP,
)
@click.option(
    "--params",
    type=click.UNPROCESSED,
    default="",
    help=PARAMS_ARG_HELP,
    callback=_split_params,
)
def run(
    tags,
    env,
    runner,
    is_async,
    node_names,
    to_nodes,
    from_nodes,
    from_inputs,
    to_outputs,
    load_versions,
    pipeline,
    config,
    conf_source,
    params,
):
    """Run the pipeline."""

    runner = load_obj(runner or "SequentialRunner", "kedro.runner")
    tags = tuple(tags)
    node_names = tuple(node_names)

    with KedroSession.create(
        env=env, conf_source=conf_source, extra_params=params
    ) as session:
        session.run(
            tags=tags,
            runner=runner(is_async=is_async),
            node_names=node_names,
            from_nodes=from_nodes,
            to_nodes=to_nodes,
            from_inputs=from_inputs,
            to_outputs=to_outputs,
            load_versions=load_versions,
            pipeline_name=pipeline,
        )


项目设置

安装所有软件包依赖项

以下运行pip来安装requirements.txt中指定的所有软件包依赖项:

pip install -r requirements.txt

如需了解更多信息,请参阅项目特定依赖项的安装文档

运行项目

调用定义在kedro.framework.session中的KedroSessionrun()方法。

kedro run

KedroContext 可以在 run.py (src//run.py) 中进行扩展。要使用扩展后的 KedroContext,您需要在 pyproject.toml 配置文件中设置 context_path

修改kedro run

Kedro提供了修改管道运行的选项。以下是开箱即支持的CLI参数列表。请注意尖括号内的名称(<>)是占位符,您应该将这些值替换为您项目中相关节点、数据集、环境等的实际名称。

CLI命令

描述

kedro run --from-inputs=,

应作为起始点使用的数据集名称列表

kedro run --to-outputs=,

应作为终点的数据集名称列表

kedro run --from-nodes=,

应作为起始点使用的节点名称列表

kedro run --to-nodes=,

应作为终点的节点名称列表

kedro run --nodes=,

仅运行具有指定名称的节点。

kedro run --runner=

使用特定运行器执行流水线

kedro run --async

使用线程异步加载和保存节点的输入和输出

kedro run --env=

在env_name环境中运行流水线。如果未提供,默认为本地环境

kedro run --tags=,

仅运行附加了这些标签中任意一个的节点。

kedro run --load-versions=:YYYY-MM-DDThh.mm.ss.sssZ

指定特定数据集版本(时间戳)以供加载。

kedro run --pipeline=

按名称运行整个流水线

kedro run --namespace=

仅运行具有指定命名空间的节点

kedro run --config=.yml

在指定的YAML配置文件中指定所有命令行选项

kedro run --conf-source=

为配置文件指定新的源目录

kedro run --conf-source= file>

仅在使用OmegaConfigLoader时可用。指定一个ziptar格式的压缩配置文件。

kedro run --params==,=

执行带参数的运行,参数格式为{"param_key1": "value1", "param_key2": 2}。这些参数将优先于conf目录中定义的参数。此外,可以使用点号(.)语法来访问嵌套键,例如parent.child:value

你也可以将这些选项组合使用,因此以下命令会运行从splitpredict以及report的所有节点:

kedro run --from-nodes=split --to-nodes=predict,report

该功能已扩展至kedro run --config=config.yml命令,使您能够在配置文件中指定运行命令

参数化运行最适合用于动态参数,例如使用不同输入运行相同的流水线;对于不会改变的静态参数,我们建议遵循Kedro项目设置方法

部署项目

以下命令将您的应用程序打包为一个.whl文件,存放在项目的dist/文件夹中。项目配置会单独打包为tar.gz文件:

kedro package

查看Python文档获取更多关于打包的信息

拉取一个微包

自 Kedro 0.17.7 版本起,您可以通过以下方式将微包引入您的 Kedro 项目:

警告

此命令已弃用,将在Kedro 1.0.0版本中移除。

kedro micropkg pull <link-to-micro-package-sdist-file>

上述命令将获取打包的.tar.gz文件并执行以下操作:

  • 将源代码放置在 src//pipelines/

  • 将参数放置在 conf/base/parameters_.yml

  • 将测试提取出来并放入 src/tests/pipelines/

kedro micropkg pull 支持PyPI、本地存储和云存储:

  • PyPI: kedro micropkg pull 其中 是PyPI上的一个包

  • 本地存储: kedro micropkg pull dist/-0.1.tar.gz

  • 云存储: kedro micropkg pull s3:///-0.1.tar.gz

项目质量

项目开发

模块化管道

在你的项目中创建一个新的模块化流水线
kedro pipeline create <pipeline_name>
打包一个微包

以下命令将所有与微包(例如模块化流水线)相关的文件打包成一个Python源码分发文件

警告

此命令已弃用,将在Kedro 1.0.0版本中移除。

kedro micropkg package <package_module_path>

更多信息请参阅微包文档

在你的项目中拉取一个微包

以下命令从PyPIPython源码分发文件的存储位置拉取与微包(例如模块化流水线)相关的所有文件。

警告

此命令已弃用,将在Kedro 1.0.0版本中移除。

kedro micropkg pull <package_name> (or path to a sdist file)

更多信息请参阅微包文档

删除模块化管道

以下命令将删除Kedro项目中与模块化流水线相关的所有文件。

kedro pipeline delete <pipeline_name>

更多信息请参阅微包文档

已注册的流水线

描述一个已注册的管道
kedro registry describe <pipeline_name>

输出结果包含流水线中的所有节点。如果未提供流水线名称,该命令将返回__default__流水线中的所有节点。

列出项目中所有已注册的管道
kedro registry list

数据集

按类型列出每个流水线的数据集
kedro catalog list

结果包含特定管道使用/未使用的数据集。

该命令还接受一个可选的 --pipeline 参数,允许您指定管道名称(以逗号分隔的值),以便仅筛选由这些指定管道使用的数据集。例如:

kedro catalog list --pipeline=ds,de
解析目录中的数据集工厂
kedro catalog resolve

该命令解析目录文件中的数据集工厂与管道中的任何显式条目。输出内容包括目录文件中明确提及的数据集,以及项目中管道中提及且匹配数据集工厂的任何数据集。

目录中的数据集工厂排名
kedro catalog rank

输出包含目录中所有数据集工厂的列表,按它们匹配的优先级排序。

数据目录

创建数据目录YAML配置文件

以下命令会为已注册流水线中的每个数据集创建一个Data Catalog YAML配置文件,使用MemoryDataset数据集类型(如果该数据集在DataCatalog中缺失)。

kedro catalog create --pipeline=<pipeline_name>

该命令还接受一个可选的--env参数,允许您指定配置环境(默认为base)。

该命令会创建以下文件://catalog_.yml

Notebooks

启动Jupyter Notebook:

kedro jupyter notebook

启动JupyterLab:

kedro jupyter lab

启动IPython shell:

kedro ipython

Kedro IPython扩展 使以下变量在您的IPython或Jupyter会话中可用:

要重新加载这些变量(例如,如果您更新了catalog.yml),请使用%reload_kedro行魔法命令,该命令也可用于查看上述任何变量未定义时的错误消息。