微打包¶
警告
微打包功能已被弃用,将在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/中找到的任何依赖项包含在微包tar文件中。当通过kedro micropkg pull拉取微包时,这些依赖项将被纳入考虑。
注意
即使存在conf/中的目录配置文件,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 packageCLI命令接受的选项。
注意
确保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和云端:
操作 |
命令 |
|---|---|
从本地目录拉取 |
|
从云存储拉取 |
|
从类似PyPI的端点拉取 |
|
提供 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 pullCLI命令接受的选项。
警告
根据TOML规范,任何包含A-Za-z0-9_-范围外字符的键都必须加引号。