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 micropkg package(自1.0.0版本起已弃用)kedro micropkg pull(从1.0.0版本开始已弃用)
全局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中的KedroSession的run()方法。
kedro run
KedroContext 可以在 run.py (src/) 中进行扩展。要使用扩展后的 KedroContext,您需要在 pyproject.toml 配置文件中设置 context_path。
修改kedro run¶
Kedro提供了修改管道运行的选项。以下是开箱即支持的CLI参数列表。请注意尖括号内的名称(<>)是占位符,您应该将这些值替换为您项目中相关节点、数据集、环境等的实际名称。
CLI命令 |
描述 |
|---|---|
|
应作为起始点使用的数据集名称列表 |
|
应作为终点的数据集名称列表 |
|
应作为起始点使用的节点名称列表 |
|
应作为终点的节点名称列表 |
|
仅运行具有指定名称的节点。 |
|
使用特定运行器执行流水线 |
|
使用线程异步加载和保存节点的输入和输出 |
|
在env_name环境中运行流水线。如果未提供,默认为本地环境 |
|
仅运行附加了这些标签中任意一个的节点。 |
|
指定特定数据集版本(时间戳)以供加载。 |
|
按名称运行整个流水线 |
|
仅运行具有指定命名空间的节点 |
|
在指定的YAML配置文件中指定所有命令行选项 |
|
为配置文件指定新的源目录 |
|
仅在使用 |
|
执行带参数的运行,参数格式为 |
你也可以将这些选项组合使用,因此以下命令会运行从split到predict以及report的所有节点:
kedro run --from-nodes=split --to-nodes=predict,report
该功能已扩展至kedro run --config=config.yml命令,使您能够在配置文件中指定运行命令。
参数化运行最适合用于动态参数,例如使用不同输入运行相同的流水线;对于不会改变的静态参数,我们建议遵循Kedro项目设置方法。
部署项目¶
以下命令将您的应用程序打包为一个.whl文件,存放在项目的dist/文件夹中。项目配置会单独打包为tar.gz文件:
kedro package
拉取一个微包¶
自 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>
更多信息请参阅微包文档。
在你的项目中拉取一个微包¶
以下命令从PyPI或Python源码分发文件的存储位置拉取与微包(例如模块化流水线)相关的所有文件。
警告
此命令已弃用,将在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)。
该命令会创建以下文件:
Notebooks¶
启动Jupyter Notebook:
kedro jupyter notebook
启动JupyterLab:
kedro jupyter lab
启动IPython shell:
kedro ipython
Kedro IPython扩展 使以下变量在您的IPython或Jupyter会话中可用:
catalog(类型DataCatalog): 包含所有已定义数据集的数据目录实例;这是context.catalog的快捷方式context(类型KedroContext): Kedro项目上下文,提供对Kedro库组件的访问pipelines(类型dict[str, Pipeline]): 在pipeline registry中定义的管道session(类型KedroSession): 协调管道运行的Kedro会话
要重新加载这些变量(例如,如果您更新了catalog.yml),请使用%reload_kedro行魔法命令,该命令也可用于查看上述任何变量未定义时的错误消息。