Kedro 使用了错误的 conda 环境

Kedro using wrong conda environment

我创建了一个名为 Foo 的 conda 环境。激活此环境后,我使用 pip 安装了 Kedro,因为 conda 给我带来了冲突。即使我在 Foo 环境中,当我 运行:

kedro jupyter lab

它从我的 base 环境中获取模块,而不是 Foo 环境。知道为什么会这样吗,以及如何更改我的笔记本检测到的模块?

编辑

通过修改我的代码,我发现在 \AppData\Roaming\jupyter\kernels\kedro_project\kernel.json 上它从基本环境调用 python,而不是 Foo 环境。我手动更改了它,但是是否有一种模式自动设置 \AppData\Roaming\jupyter\kernels\kedro_project\kernel.json 以使用我所在的当前环境?

这可能是 jupyter 的问题。我建议尝试 运行 jupyter notebook 并了解它是 kedro 还是 jupyter。

我记得由于某些 jupyter 问题而遇到类似的问题,但不记得我是如何修复它的。我记得尝试过一些解决方案 this issue 在 jupyter 上。

尝试在您的 foo 环境中执行 pip install jupyterlab,Jupyter 内核是一个不同的概念,有时表现得很奇怪。

自定义 Kedro 内核规范是我最近添加到 Kedro 的一项功能。当您 运行 kedro jupyter lab/notebook 时,它应该会自动在 conda 环境中启动,而无需您手动编辑 kernel.json 文件。我自己对此进行了测试以检查它是否有效,所以我非常想了解这里发生了什么!

函数_create_kernel is what makes the the Kedro kernel spec. The docstring for that explains what's going on, but in short we delegate to ipykernel.kernelspec.install. This generates a kernelspec that points towards the Python path given by sys.executable (see make_ipkernel_cmd)。从理论上讲,这应该已经指向正确的 Python 路径,该路径考虑了 conda 环境。

值得检查 which kedro 以查看指向哪个 conda 环境,如果我们需要进一步调试,请在我们的 Github repo 上提出问题。我绝对想查个水落石出,了解问题出在哪里。

P.S。您还可以执行简单的 jupyter lab/notebook 以在正确的 conda 环境中启动内核,然后在第一个单元格中 运行 %load_ext kedro.extras.extensions.ipython 。这基本上等同于使用 Kedro 内核规范,它会自动加载 Kedro IPython 扩展。