如何在Jupyter笔记本上为新笔记本切换环境?

11

我有一个实例,有各种环境,并且一些笔记本电脑适用于不同的环境,例如notebook1适用于MXNet,notebook2适用于Tensorflow。

当我从notebook1切换到notebook2时,我该如何跳转到新的环境?我尝试过这样做,但是在Jupyter笔记本电脑上并不完全有效。有什么建议吗?

所以我需要从conda环境中进行设置,但似乎jupyter笔记本UI不遵守(调用正确的激活函数)来设置路径。


你尝试过设置虚拟环境吗?你可以为MXNet和Tensorflow分别设置一个虚拟环境。https://virtualenv.pypa.io/en/stable/ - jss367
如果我理解你的意思,你需要在调用jupyter notebook之前激活环境。因此,你需要执行activate pytf然后执行jupyter notebook。这样你就可以在正确的环境中打开笔记本了。 - jss367
谢谢,但安装 environment_kernels 包已经帮助实现了这个。 - rgaut
5个回答

15
你可以使用 nb_conda_kernels 包,它为每个 conda 环境提供了一个单独的 Jupyter 内核,并提供适当的代码来处理它们的设置。这样,切换 conda 环境就像切换 Jupyter 内核一样简单(例如,从内核菜单),非常方便。你可以通过 conda-forge 频道获得它。
conda install -c conda-forge nb_conda_kernels

是的,除了这个软件包之外,我认为还需要更改 ~/.jupyter/jupyter_notebook_config.py 文件并添加以下配置:c.NotebookApp.kernel_spec_manager_class = 'environment_kernels.EnvironmentKernelSpecManager' - rgaut
此操作(在配置文件中设置 kernel_spec_manager_class 值)是由 nb_conda_kernels.install 模块(请参见 https://github.com/Anaconda-Platform/nb_conda_kernels/blob/3478523f366b11dd62ed6bd1535196c7c5a7e8c5/nb_conda_kernels/install.py#L76-L77)自动完成的,该模块会在 conda 包安装的过程中自动调用(请参见 conda 配方中的 post-link 脚本:https://github.com/Anaconda-Platform/nb_conda_kernels/blob/3478523f366b11dd62ed6bd1535196c7c5a7e8c5/conda.recipe/post-link.sh)。 - jcb91
conda-forge 频道使用非常旧的软件包。使用此频道,您可能还需要降级 Python 版本。为了安全起见,请使用默认的 Anaconda 频道,即使用 -c defaults - Shailen
另外,截至 01.2019,@rgaut 的评论似乎不起作用。您需要编辑 ~/.jupyter/jupyter_notebook_config.py 并设置:c.NotebookApp.kernel_spec_manager_class = 'nb_conda_kernels.CondaKernelSpecManager' - Shailen

3

按照用户@jcb91的建议,安装nb_conda_kernels包对我有用。 我不得不在我的根(基本)环境和我想要使用它的虚拟环境中都安装它。 要做到这一点,请在Anaconda提示符中(在您的基本环境中)运行以下命令:

conda install nb_conda_kernels

然后,激活你的虚拟环境(在下面的代码中命名为'myenv'),并在其中安装nb_conda_kernels包。你可以在Anaconda提示符中运行以下命令来完成此操作:

conda activate myenv
conda install nb_conda_kernels

现在,您应该能够使用以下方式切换到不同的环境:

Kernel -> Change Kernel

2
当您在环境中启动jupyter笔记本时,它只能访问安装在该特定环境中的模块。如果您需要为两个不同的笔记本使用两个特定的环境,则需要分别在这两个环境中启动jupyter笔记本。
如果您正在使用anaconda,则可以在终端中执行以下操作:
source activate MXNET
jupyter notebook

然后在第二个终端中执行:

 source activate Tensorflow
 jupyter notebook

是的,我想通过 UI 切换环境,而不使用这些命令。 - rgaut
1
我不确定这是否符合您的要求,但您可以尝试在Jupyter Notebook菜单中更改环境,方法是Kernel -> Change Kernel -> [...可用内核...]。 - Amade
1
@Amade - 对我来说那行不通。更改内核总是使用某个已激活的Python的Python。列表中每个内核的kernel.json指向其各自环境中不同的Python路径。但是,!which python始终使用在启动jupyter笔记本的当前激活环境中的那个Python。 - Shailen

1
我并不完全了解内核(kernel)conda环境(conda env)之间的定义和关系,但我相信我们可以为每个环境(env)设置一个内核。
我遇到了一个类似于你的问题:我在env_without_lgb下的data_cleaning.ipynb中清理了我的数据。然而,我在env_lightgbm下安装了lightgbm。所以,我想要从env_without_lgb切换内核/环境(kernel/env)env_lightgbm,我们可以使用Kernel -> Change Kernel

enter image description here

如果没有你想要的内核,请根据this guide在正确的环境下创建内核。对我来说,我一开始只有一个Pure Python 3 kernel和一个R kernel,然后我在env_lightgbm下创建了一个内核。最后,在编辑代码时,我们可以切换内核。然而,我仍然无法弄清内核和环境之间的关系。

0

随着这个软件包,我认为还需要更改 ~/.jupyter/jupyter_notebook_config.py 文件的以下配置

c.NotebookApp.kernel_spec_manager_class = 'environment_kernels.EnvironmentKernelSpecManager'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接