打包完整的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.autodoc和sphinx.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源代码,不包含任何conf和data子文件夹。这意味着您可以将项目分发到其他地方运行,例如在具有不同配置信息、数据集和日志记录位置的独立计算机上。
项目配置单独提供在一个tar.gz文件中,该文件也位于dist文件夹内。这个压缩版的配置文件排除了local目录中的所有文件。
运行一个打包项目¶
要运行一个打包项目,首先需要安装它。要从.whl文件安装该包,您的机器上需要安装Python和pip,但不需要安装Kedro。
要安装项目,请运行以下命令:
pip install <path-to-wheel-file>
注意
安装打包项目后,您需要添加:
一个
conf文件夹如果管道加载/保存本地数据,则有一个
data文件夹
或者,您也可以利用OmegaConfigLoader直接通过运行压缩的.tar.gz配置文件来执行配置,只需运行
kedro run –conf-source
项目安装完成后,既可以通过命令行运行,也可以使用Python代码交互式运行。
要从命令行运行已安装项目的基本执行,请运行python -m 。打包后的项目还提供了一个命令行界面,可用于修改项目的运行方式。要查看选项列表,请在命令行使用python -m 。
要以交互方式使用代码运行您打包的项目,可以从项目中导入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 描述的选项对应的参数。
注意
如果你在交互式环境(如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插件部署打包的流水线:
Kedro-Docker 插件用于在 Docker 容器中打包和分发Kedro项目。
Kedro-Airflow 将您的Kedro项目转换为Airflow项目。
部署指南 还涉及其他部署目标如AWS Batch和Prefect,并且有一系列用于部署的第三方插件。