Python 在Kedro中的load_上下文的额外_参数中传递嵌套参数

Python 在Kedro中的load_上下文的额外_参数中传递嵌套参数,python,kedro,Python,Kedro,我正在尝试加载带有一些额外参数的Kedro上下文。我的意图是仅使用传入的额外参数更新parameters.yml中的配置(因此其余配置应保持不变)。然后,我将使用这个上下文实例来运行一些节点/管道(注意:我不想修改parameters.yml文件,只需为此运行更新它)。我可以为parameters.yml中在顶部/根级别定义的每个配置执行此操作,但在嵌套参数的情况下,仅保留传递的配置 复制这个问题, 参数。yml config_root1: "name" config_root2: "surna

我正在尝试加载带有一些额外参数的Kedro上下文。我的意图是仅使用传入的
额外参数更新
parameters.yml
中的配置(因此其余配置应保持不变)。然后,我将使用这个上下文实例来运行一些节点/管道(注意:我不想修改
parameters.yml
文件,只需为此运行更新它)。我可以为
parameters.yml
中在顶部/根级别定义的每个配置执行此操作,但在嵌套参数的情况下,仅保留传递的配置

复制这个问题,

参数。yml

config_root1: "name"
config_root2: "surname"
config_root3:
   config_leaf1: 10
   config_leaf2: 20
   config_leaf3: 30
额外参数定义为

extra_params = {'config_root1': 'new_name', 'config_root3': {'config_leaf1': 11}}
通过以下方式加载带有额外参数的上下文:

from kedro.framework.context import load_context    
context = load_context(proj_path, extra_params=extra_params)
上下文中的参数更新为

config_root1: "new_name"
config_root2: "surname"
config_root3:
   config_leaf1: 11
注意事项:

  • config_root1
    位于根级别,值被传递到
    extra_params
    ,因此它被更新
  • config_root2
    位于根级别,未传递任何值,因此它保持不变
  • config_leaf1
    处于叶级别,传递的值因此更新
  • config_leaf{2,3}
    处于叶级别,因此没有传递任何值
  • 这个问题似乎与如何合并和合并有关

    除了总是传递
    额外参数
    中的所有参数之外的任何解决方法(即使只需要更改很少的参数)


    谢谢。

    将key
    config\u root3
    替换为新值的问题,不能轻易忽略

    我想最好的方法是创建两个单独的配置,它们使用覆盖相互覆盖,但这需要更改您处理load_上下文的方式

    此外,您可以手动使用配置加载程序和合并参数,然后将合并结果作为
    额外参数提供