微打包

警告

微打包功能已被弃用,将在Kedro 1.0.0版本中移除。

微打包功能允许用户跨代码库、组织及其他范围共享Kedro微包。微包可以是Kedro项目中的任意Python代码部分,包括流水线和工具函数。

打包一个微包

您可以通过执行以下命令打包一个微包:kedro micropkg package

应该是一个Python模块路径,类似于在import语句中使用的那样,例如

kedro micropkg package pipelines.data_processing

  • 这将为该微包生成一个新的源代码发行版。

  • 默认情况下,tar文件将保存到项目内的dist/目录中。

  • 您可以使用--destination (-d)选项来自定义目标路径。

当你打包你的微包时,例如模块化管道,Kedro还会自动打包来自3个位置的文件:

├── conf
│   └── base
│       └── parameters_{{pipeline_name*}}  <-- All parameter file(s)
├── tests
│   ├── init__.py
│   └── pipelines
│       └── {{pipeline_name}}              <-- Pipeline tests
└── src
    └── my_project
        ├── __init__.py
        └── pipelines
            └── {{pipeline_name}}          <-- Pipeline folder

Kedro还会将src//pipelines//requirements.txt中找到的任何依赖项包含在微包tar文件中。当通过kedro micropkg pull拉取微包时,这些依赖项将被纳入考虑。

注意

即使存在conf//catalog_.yml中的目录配置文件,Kedro也不会打包这些文件。

如果您计划将打包的微包发布到类似PyPI的Python包仓库,需要确保您的微包名称不会与该仓库中现有任何包名冲突。不过,即使出现名称冲突也无需重命名源文件。只需通过运行kedro micropkg package --alias 命令,用新名称给您的包设置别名即可。

除了PyPI,您还可以直接分享打包的tar文件,或通过AWS S3等云存储进行分享。

打包多个微包

要批量打包多个微包,请运行kedro micropkg package --all。这将打包项目pyproject.toml文件中tool.kedro.micropkg.package清单部分指定的所有微包:

[tool.kedro.micropkg.package]
cleaning_utils = {alias = "aliased_util", destination = "somewhere/else", env = "uat"}
second_pipeline = {}
  • 键名 (first_pipeline, second_pipeline) 对应代码库中微包文件夹的名称。

  • 这些值是kedro micropkg package CLI命令接受的选项。

注意

确保destination即使在Windows机器上工作时也指定为POSIX路径。

注意

上述示例适用于任何通用的Python包,模块化管道属于这一类别,可以通过pipelines.pipeline_name语法轻松处理。

拉取一个微包

你可以通过执行kedro micropkg pull 命令从tar文件中拉取微包。

  • 必须是PyPI上的包名称或源代码分发文件的路径。

  • Kedro 将解压 tar 文件,并将文件安装到您 Kedro 项目中的以下位置:

    • 所有微包代码位于 src///

    • 配置文件位于 conf//parameters_.yml,其中 默认为 base

    • 要从不同的配置环境中获取参数,请运行 kedro micropkg pull --env

    • src/tests/ 中的单元测试

  • Kedro还会解析微包中包含的任何依赖项,并将它们添加到项目级的requirements.in文件中。

  • 建议在使用pip-compile拉取微包后,编译更新后的需求列表。

注意

如果微包包含嵌入式需求且项目中不存在requirements.in文件,系统将在追加微包需求前,基于项目的requirements.txt文件生成该文件。

您可以从不同位置拉取微包,包括本地存储、PyPI和云端:

操作

命令

从本地目录拉取

kedro micropkg pull dist/-0.1-py3-none-any.tar.gz

从云存储拉取

kedro micropkg pull s3://my_bucket/-0.1-py3-none-any.tar.gz

从类似PyPI的端点拉取

kedro micropkg pull

提供 fsspec 参数

  • 如果你从非PyPI的位置拉取微包,Kedro会使用fsspec来定位并下载你的微包。

  • 你可以使用 --fs-args 选项指向包含所需配置的 YAML 文件。

kedro micropkg pull https://<url-to-pipeline.tar.gz> --fs-args micropkg_pull_args.yml
# `micropkg_pull_args.yml`
client_kwargs:
  headers:
    Authorization: token <token>

拉取多个微包

  • 要批量拉取多个微包,运行 kedro micropkg pull --all

  • 这将拉取并解压项目pyproject.toml文件中tool.kedro.micropkg.pull清单部分指定的所有微包:

[tool.kedro.micropkg.pull]
"src/dist/first-pipeline-0.1-py3-none-any.tar.gz" = {}
"https://www.url.to/second-pipeline.tar.gz" = {alias = "aliased_pipeline", destination = "pipelines", fs-args = "pipeline_pull_args.yml"}
  • 键(在此处指tar引用)是包路径

  • 这些值是kedro micropkg pull CLI命令接受的选项。

警告

根据TOML规范,任何包含A-Za-z0-9_-范围外字符的键都必须加引号。