【发布时间】:2021-12-14 21:42:39
【问题描述】:
有没有办法访问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 时指定了 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。
【问题讨论】:
-
您始终可以在外部设置环境变量并使用
os.environ['ENV_VAR_NAME']读取。但这不应该是必需的。只需通过kedro run --env=server就可以了。您能否添加更多详细信息,为什么您认为它没有被阅读? -
如果你用
kedro run --env=server运行,你为什么要手动构造conf_paths/ConfigLoader/等等?我不知道您使用的是什么版本,但它由 Kedro 框架以github.com/quantumblacklabs/kedro/blob/0.17.6/kedro/framework/… 之类的代码处理。在这里,您可以看到它采用了配置的环境(无需了解它是如何从您最初在 CI 中传递它的位置向下传播到这里的,它是如何到达 KedroSession构造函数的,等等)。 -
@Rahulkumar 添加了有关该问题的更多详细信息
-
@deepyaman 如何访问nodes.py 中的参数而不专门将参数传递给每个节点?
-
当您使用
kedro run --env=server时。你没有定义conf_loader = ConfigLoader(conf_paths)对吧?如果是,那么它已被硬编码为仅基础和本地环境。