如何访问 kedro 管道中的环境名称
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_paths 中作为 "conf/<env_name>"
这样 kedro将从各自的 env 文件夹中读取文件。
但是现在如果 env 路径没有添加到 conf_paths,即使我在 运行 kedro 喜欢 kedro run --env=server
时指定了 env 名称,文件也不会被 kedro 读取
我搜索了所有文档,但找不到任何解决方案。
编辑:
详细说明这个问题。
我在节点中使用上面给出的参数和目录字典。我只有 conf/base/parameters.yml
中所有 运行 的通用键和 conf/server/parameters.yml
中的环境特定键但是当我这样做时 kedro run --env=server
我得到 keyerror
表示 conf/server/parameters.yml
中的键在参数字典中不可用。如果我将 conf/server
添加到 config_paths kedro 是 运行ning 好没有 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。
有什么方法可以访问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_paths 中作为 "conf/<env_name>"
这样 kedro将从各自的 env 文件夹中读取文件。
但是现在如果 env 路径没有添加到 conf_paths,即使我在 运行 kedro 喜欢 kedro run --env=server
时指定了 env 名称,文件也不会被 kedro 读取
我搜索了所有文档,但找不到任何解决方案。
编辑:
详细说明这个问题。
我在节点中使用上面给出的参数和目录字典。我只有 conf/base/parameters.yml
中所有 运行 的通用键和 conf/server/parameters.yml
中的环境特定键但是当我这样做时 kedro run --env=server
我得到 keyerror
表示 conf/server/parameters.yml
中的键在参数字典中不可用。如果我将 conf/server
添加到 config_paths kedro 是 运行ning 好没有 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。