参考资料:
https://www.jianshu.com/p/fcaec99e7e2a:下面叫他教程A
如果你在搜索引擎中搜索,“Jupyter notebook添加内核”。你可以搜索到很多篇文章,但是在细节方面,这些文章往往没有点到位。这就导致读者多走很多弯路:比如我。今天是我对Jupyter notebook添加核的第三次尝试,每次都借鉴了网上的教程文章。但是直到最近灵光一现才把这个事情解决,下面教程中的粗体字涉及的部分读者一定要小心。
首先,conda的其中一个重要的功能是创建虚拟环境:参见:https://www.cnblogs.com/chester-cs/p/11824433.html。
那么好,我现在创建了两个环境,一个是(base)环境,一个是(torch环境),这两个环境有如下差异:
(base):python 3.6,Pytorch 1.2
(torch):python 3.8,Pytorch 1.8
我们首先按照教程A的指引,在 base 环境中安装jupyter notebook,并且将jupyter notebook搭建好:(下图是Jupyter Lab,原理一样)
注意看,这里和base环境一致,并且,右上角有一个Python 3,这其实就是base环境的内核。如果你点击它,是可以换内核的。现在我们还没有添加内核,当然无核可换。
我们的目标是:通过新建一个ipynb文件,点击右上角的Python 3更换内核,使得新的ipynb文件里的环境完全和torch环境一致!!!
注意了,当前这个Jupyter notebook(Jupyter Lab同理)是在基环境(base)里面搭建的,如果我们按照教程A,在torch环境中安装ipykernel,结果会怎样?请看下图:
此时,我们有两个jupyter了!!!而且明显是两个可执行文件,那么,添加核的操作,到底应该在哪个环境中进行??是在torch环境,还是base环境?
之前的两次尝试,我都想当然地认为,应当是在base环境中添加kernel,理由是我们当前的jupyter notebook是从base环境中启动的,如果添加内核并在这个jupyter notebook中用,添加肯定要在这个环境中进行啊。
但是,正确的做法恰好相反,我们应当在torch环境中添加内核。不妨继续按照教程A中的步骤,在torch环境中运行添加核的命令:
python -m ipykernel install --name env_name
在此处就是
python -m ipykernel install --name torch
运行后有如下输出:
Installed kernelspec torch in /usr/local/share/jupyter/kernels/torch
看到这里,有经验的读者应该明白之前我的想法为什么错,而这种做法为什么对了。
jupyter其实就是为每个环境中的内核都创建一个配置文件,这个配置文件是对所有的环境都可见的,因此 base 环境中的jupyter notebook看到了torch环境的配置文件。直接就可以显示在它的jupyter界面中,不妨试一试,刷新页面就能成功。
成功创建了一个torch环境的ipynb文件!