Jupyter Notebook 中添加 conda 虚拟环境

最近在查深度学习有关的资料时了解到了 Jupyter Notebook 这一交互式 python 编辑器,抱着好奇的心态去试用了一下,结果瞬间就被它吸粉了。

由于不怎么熟悉,我在刚接触这一工具时也遇到了一些问题,“如何在 Jupyter Notebook 中使用 conda 创建的虚拟环境”就是其中最主要的一点。

需求详情

我在电脑上安装的 python 发行版是 anaconda,平时使用 conda 来创建和管理 python 虚拟环境。

anaconda 在主环境(base)里默认安装了 Jupyter,可以直接启动,但是这样的话只能使用主环境里安装的 python 和 python 包。

那如果需要使用虚拟环境来运行代码该怎么办呢?

解决办法

首先想到的解决办法就是在虚拟环境里也安装一遍 Jupyter ,使用时先在命令行下切到虚拟环境里再去运行。这种方法经测试是可行的,但显然有点过于麻烦了,有没有更方便的办法呢?

经过查找资料,Jupyter Notebook 是支持在运行时切换 python kernel 的,不过需要对切换的环境做一点配置。

安装 ipykernel

首先切换到想要在 Jupyter Notebook 里使用的虚拟环境:

1
conda activate 环境名称

安装 ipykernel:

1
conda install ipykernel

写入 Jupyter 的 kernel

在当前虚拟环境里执行:

1
python -m ipykernel install --user --name 环境名称 --display-name "Python (环境名称)"

“环境名称”为当前虚拟环境的名称,最后面引号内的字符串是该虚拟环境显示在 Jupyter Notebook 界面的名字,可以随意修改。

切换 kernel

上面两步后就完成了 Jupyter 的相关配置,启动 Jupyter Notebook:

1
jupyter notebook

之后在其打开的浏览器页面里新建文件时就可以看到刚刚添加的虚拟环境的选项了。

也可以在已经创建的项目的运行界面直接切换内核(Change kernel),如下图:

Jupyter切换内核

删除 kernel 环境

上面写入 kernel 的配置并不会随虚拟环境的删除而删除。也就是说即使删除了该虚拟环境,Jupyter Notebook 的界面上仍会有它的选项,只是无法正常使用。

此时就需要去手动删除 kernel 环境了:

1
jupyter kernelspec remove 环境名称