0

我想通过命令行控制 kedro 参数。

根据docs,kedro 可以指定运行时参数,如下所示:

kedro run --params key:value
> {'key': 'value'}

有用。同样,我尝试像这样指定列表参数:

kedro run --params keys:['value1']
> {'keys': '[value1]'}

它不起作用,因为 kedro interplets不是 list 而是 str。可能,这个答案可能是相关的。

希望提到一些事情,让 kedro 评估像 yaml 这样的列表参数。

4

2 回答 2

2

除了 Zain 的回答之外,还可以使用CLI config指定额外的参数。哪里config.yml看起来像:

run:
  params:
    keys: [value1]

但再次强调:我们强烈建议不要在额外的 CLI 参数中添加复杂的结构。建议的方法是为此使用配置环境

于 2020-06-22T10:25:45.790 回答
1

默认情况下,kedro命令行不会对更简单的数字类型以外的参数进行类型转换。更复杂的参数应该通过parameters.yml文件来处理。

也就是说,如果你真的想这样做,你可以修改你的kedro_cli.py来支持这个。具体来说,您需要修改_split_params文件中的回调函数。这里最简单的事情可能是更改读取的行

result[key] = _try_convert_to_numeric(value)

它处理将简单的数字类型解析为

result[key] = json.loads(value)

使其解析更广泛的类型。也就是说,解析您传入的 CLI 参数json(因此您还需要注意引号并确保传入有效的json语法。

如果这不起作用,您可以尝试添加自己的语法并在该函数中解析它。但是,我的建议是避免依赖 CLI 中的脆弱字符串参数评估,parameters.yml而是使用它。

于 2020-06-21T00:48:49.053 回答