打包完整的Kedro项目

本节将介绍如何构建项目文档,以及如何将Kedro项目打包成Python包。

Kedro还提供了一项高级功能,支持在流水线级别进行打包,使您能够在不同项目间共享和复用流水线!如需了解更多详情,请参阅微打包章节

如果未选择docs工具,请向Kedro项目添加文档

注意

以下步骤适用于未启用docs工具选项的项目。您可以通过检查项目中是否不存在docs目录来确认这一点。

Python项目有多种文档框架可供选择。本节介绍如何使用Sphinx

要安装Sphinx,请运行以下命令:

pip install sphinx

设置Sphinx项目文件

首先,运行以下命令:

sphinx-quickstart docs

Sphinx将询问一系列配置问题。第一个问题如下:

You have two options for placing the build directory for Sphinx output.
Either, you use a directory "_build" within the root path,
or you separate "source" and "build" directories within the root path.

> Separate source and build directories (y/n)? [n]:

选择 y 将构建文件与源文件分离,并输入 Sphinx 要求的其他信息,例如项目名称和文档语言(默认为英语)。

Build HTML documentation

警告

如果您之前备份了index.rst的内容,请在进行下一步操作前将其恢复。

快速入门流程完成后,您可以通过进入docs目录并运行以下命令来构建文档:

make html

Project documentation will be written to the docs/build/html directory.

您可能希望在Kedro项目的docs/source文件夹中添加项目特定的Markdown文档。为了能够构建这些文档,请按照MyST-Parser的入门说明操作,并更新docs/source/index.rst文件以将Markdown文件添加到目录中。

来自文档字符串的文档

如果您希望在项目中添加基于docstrings构建的文档,需要对位于docs/source目录下的Sphinx配置文件进行一些修改,以使用从代码自动生成文档功能。

conf.py中,添加以下内容以确保指定了sphinx.ext.autodocsphinx.ext.autosummary扩展,并启用了autosummary_generate

extensions = ["sphinx.ext.autodoc", "sphinx.ext.autosummary"]
autosummary_generate = True

最后,为了确保在构建中包含autodoc模块,请docs文件夹运行以下命令一次:

sphinx-apidoc --module-first -o source ../src/<package_name>

这将生成一个docs/src/modules.rst文件,以及其他包含对任何文档字符串引用的文件。要将这些包含在您的文档中,请确保docs/src/index.rst在目录中有一个modules条目:

.. toctree::

   modules

docs文件夹中运行以下命令:

pip install -e ../src

最后,docs 文件夹中运行以下命令,构建一套完整的文档,该文档会自动包含文档字符串:

make html

注意

请查阅Sphinx项目文档以获取传递给sphinx-build的附加选项。若需对基础模板之外的文档进行定制,您需要调整存储在docs/source/conf.py文件中的Sphinx配置设置

打包一个Kedro项目

要打包项目,请在项目根目录下运行以下命令:

kedro package

Kedro将项目构建为一个.whl文件包,存放在项目的dist文件夹中,这是一种用于二进制分发的Python打包格式

生成的.whl包仅包含Kedro管道的Python源代码,不包含任何confdata子文件夹。这意味着您可以将项目分发到其他地方运行,例如在具有不同配置信息、数据集和日志记录位置的独立计算机上。

项目配置单独提供在一个tar.gz文件中,该文件也位于dist文件夹内。这个压缩版的配置文件排除了local目录中的所有文件。

运行一个打包项目

要运行一个打包项目,首先需要安装它。要从.whl文件安装该包,您的机器上需要安装Python和pip,但不需要安装Kedro。

要安装项目,请运行以下命令:

pip install <path-to-wheel-file>

注意

安装打包项目后,您需要添加:

  • 一个 conf 文件夹

  • 如果管道加载/保存本地数据,则有一个data文件夹

或者,您也可以利用OmegaConfigLoader直接通过运行压缩的.tar.gz配置文件来执行配置,只需运行 kedro run –conf-source .tar.gz

项目安装完成后,既可以通过命令行运行,也可以使用Python代码交互式运行。

要从命令行运行已安装项目的基本执行,请运行python -m 。打包后的项目还提供了一个命令行界面,可用于修改项目的运行方式。要查看选项列表,请在命令行使用python -m --help

要以交互方式使用代码运行您打包的项目,可以从项目中导入main

from <package_name>.__main__ import main

main(
    ["--pipeline", "__default__"]
)  # or simply main() if you don't want to provide any arguments

这相当于在命令行中使用python -m ,您可以传入所有与python -m --help描述的选项对应的参数。

注意

如果你在交互式环境(如IPython或Databricks)中运行打包项目,还可以使用main()函数的输出,该函数返回session.run()的执行结果。

from spaceflights.__main__ import main

def run_kedro_pipeline():
   result = main(pipeline_name=<pipeline>)
   do_something_with(<result>)

Docker、Airflow及其他部署目标

有多种方法可以通过Kedro插件部署打包的流水线: