[英]How to access environment name in kedro pipeline
有没有办法访问kedro管道环境名称? 其实下面是我的问题。
我正在加载配置路径,如下所示
conf_paths = ["conf/base", "conf/local"]
conf_loader = ConfigLoader(conf_paths)
parameters = conf_loader.get("parameters*", "parameters*/**")
catalog = conf_loader.get("catalog*")
但是我的环境很少,例如"conf/server"
、 "conf/test"
等,所以如果我有可用的环境名称,我可以将它作为"conf/<env_name>"
添加到 conf_paths,这样 kedro 就会从相应的文件中读取文件环境文件夹。 但是现在如果未将 env 路径添加到 conf_paths,即使我在运行 kedro 时指定了 env 名称,文件也不会被 kedro 读取,比如kedro run --env=server
我搜索了所有文档但无法找到任何解决方案。
编辑:详细说明这个问题。 我在节点中使用上面给出的参数和目录字典。 我只有conf/base/parameters.yml
中所有运行通用的键和conf/server/parameters.yml
中的环境特定键,但是当我执行kedro run --env=server
时,我得到keyerror
这意味着键conf/server/parameters.yml
在参数字典中不可用。 如果我将conf/server
添加到 config_paths,kedro 运行良好,没有 keyerror。
你不需要定义配置路径、配置加载器等,除非你试图覆盖某些东西。
如果您使用 kedro 0.17.x,则 hooks.py 看起来像这样。
Kedro 会将您在运行时在conf_paths
中指定的 base、local 和 env 传递到ConfigLoader
中。
class ProjectHooks:
@hook_impl
def register_config_loader(
self, conf_paths: Iterable[str], env: str, extra_params: Dict[str, Any]
) -> ConfigLoader:
return ConfigLoader(conf_paths)
@hook_impl
def register_catalog(
self,
catalog: Optional[Dict[str, Dict[str, Any]]],
credentials: Dict[str, Dict[str, Any]],
load_versions: Dict[str, str],
save_version: str,
journal: Journal,
) -> DataCatalog:
return DataCatalog.from_config(
catalog, credentials, load_versions, save_version, journal
)
有问题,我可以看到您已经定义conf_paths
和conf_loader
并且 env 路径不存在。 所以 kedro 会忽略运行时传递的 env。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.