我想通过命令行控制 kedro 参数。
根据文档,kedro 可以指定运行时参数,如下所示:
kedro run --params key:value
> {'key': 'value'}
它有效。同样,我尝试指定如下列表参数:
kedro run --params keys:['value1']
> {'keys': '[value1]'}
它不起作用,因为 kedro 插播不是列出而是 str。也许,这个答案可能是相关的。
希望提到几件事,使 kedro 评估列表参数,如 yaml。
默认情况下,kedro
命令行不会对简单数值类型以外的参数进行类型转换。更复杂的参数应通过parameters.yml
文件处理。
也就是说,如果你真的想这样做,你可以修改你的kedro_cli.py
来支持这一点。具体来说,您需要修改文件中的_split_params
回调函数。这里最简单的事情可能是更改读取的行
result[key] = _try_convert_to_numeric(value)
处理将简单数字类型解析为
result[key] = json.loads(value)
以使其解析更广泛的类型。也就是说,解析您作为json
传入的 CLI 参数(因此您还需要注意引号并确保传入有效的json
语法。
如果这不起作用,您可以尝试添加自己的语法并在该函数中解析它。但是,我的建议是避免依赖 CLI 中脆弱的字符串参数评估,而是改用parameters.yml
。
除了Zain的答案之外,还可以使用CLI配置指定额外的参数。其中config.yml
如下所示:
run:
params:
keys: [value1]
但要再次强调:我们强烈建议不要在额外的 CLI 参数中添加复杂的结构。建议的方法是为此利用配置环境。