大家在使用Jupyter Notebook进行编程时,如果需要在不同的虚拟环境中运行Jupyter,常见的做法是首先激活虚拟环境,然后在该虚拟环境下进入Jupyter Notebook环境才行。这样会导致我们如果同时运行多个项目时,就需要同时激活多个虚拟环境进入Jupyter Notebook服务,过程十分繁琐。那有没有办法能够在不开启多个Jupyter Notebook服务的前提下切换虚拟环境呢?
答案是有的,本教程提出的主要目的是帮助开发者在使用Jupyter Notebook时,切换环境内核,建议使用conda搭建的虚拟环境。
整个步骤如下:
- 创建虚拟环境
- 激活虚拟环境
- 将虚拟环境写入Jupyter Notebook中的Kernel
- 打开Jupyter Notebook服务
- 更换Kernel
- 验证是否更换成功
搭建并激活相应项目的虚拟环境
该过程参见使用conda管理虚拟环境
将虚拟环境写入Jupyter Notebook的Kernel中
查看当前conda下的所有虚拟环境。

可以看到我电脑中的虚拟环境还是比较多的,一共有9个虚拟环境。
现在演示将pytroch的环境加入到Jupyter Notebook的Kernel中。
首先,查看我已经写入Kernel的虚拟环境。
1 | jupyter kernelspec list |

从返回的结果可以看到,我的Jupyter 中已经有了3个Kernel。
然后,现在把pytorch虚拟环境写入Kernel,注意:在写入Kernel之前必须先激活虚拟环境。
激活pytorch虚拟环境
1 | conda activate pytorch |

接着,使用以下命令将pytorch虚拟环境加入到Jupyter的Kernel中。
1 | python -m ipykernel install --user --name=pytorch |

再次查看Jupyter的Kernel列表发现pytorch虚拟环境已经完成写入。

PS:删除
Kernel命令jupyter kernelspec remove KernelName(Kernel名称)
激活Jupyter Notebook服务
为了演示效果,在此我们先退出pytorch虚拟环境。
1 | conda deactivate |

输入jupyter notebook进入Jupyter服务。

新建一个notebook。

输入以下代码导入pytorch
1 | import torch |

发现基础环境中是没有torch库的,导入失败。
切换内核
点击菜单栏的Kernel菜单,在Change Kernel子菜单中选择pytorch内核。

观察notebook右上角看是否能够顺利激活内核。

我们发现此时内核已经被修改为pytorch虚拟环境。
验证是否更换成功
再次导入torch看是否能够导入成功。

此时发现执行导入命令已经没有报错。
同时,可以验证一下修改内核后torch的深度学习环境是否正常。【注:需在pytorch虚拟环境下提前安装好深度学习环境】
使用以下命令进行验证
1 | torch.cuda.is_available() |

可以发现返回的结果为True,说明深度学习环境也是正常的。
至此,已经完成了在Jupyter Notebook下的环境内核切换。
切换Tensorflow内核并查看深度学习环境是否正常
可以看到,我这里还有一个tf2.9的Kernel,该Kernel是Tensorflow-GPU2.9.1的深度学习环境,也可以切换进行演示。

从返回的结果也可以看出,环境切换得十分顺利,Tensorflow2.9深度学习环境也是正常的。