首页 > 技术文章 > Python为Jupyter notebook增加新的kernel

CircleWang 2022-02-11 12:16 原文

  在项目中我们常常需要用到多个环境,因此在JupyterNotebook中配置多个内核是我们必须要学会的。为了举例子,我们这里利用conda创造了两个环境分别是py3.8和py3.7.

第一步:了解Jupyter Kernel如何启动的

  当我们使用conda  activate py3.8 启动环境之后,如果当前环境中安装了jupyter和ipykernel两个包,我们就可以使用命令:jupyter notebook,在当前环境启动jupyter服务。此时在网页右上角中我们可以看到创建Notebook的地方出现了Python3(ipykernel),这意味着此时创建的jupyter notebook文件默认的内核是py3.8环境的内核(其实很容易想到,因为我们启动jupyter notebook这个服务就是在py3.8这个环境下启动的所以默认的内核自然应该是py3.8的)。

第二步:创建新内核

  如果我们想要使用其他的环境,意味着我们需要重新conda  activate 环境名,再启动jupyter notebook服务,再创建Notebook,这一套操作十分麻烦,有没有更简单的呢?如果可以在同一个jupyter notebook服务链接到其他环境内核(不再使用默认的内核)是不是就可以不用这么麻烦了呢?

  按照本文的例子,我现在想要在py3.8的环境里,创建Notebook时使用py3.7的内核。该怎么操作呢?

  首先,启动py3.7环境(conda  activate py3.7 ),并且在该环境(py3.7)下安装jupyter和ipykernel两个包。接下来我们需要使用命令行将当前环境内核(py3.7)添加到.local/share/jupyter/kernels/配置文件中,在任何环境里启动的jupyter都是可以看到该配置文件,因此只要把内核环境(此处是py3.7)注册到这个文件中,接下来无论在什么环境启动jupyter notebook服务都是可以该内核的。命令行如下:

python -m ipykernel install --user --name py3.7(这里名字可以随便取可以是hello等)

  如果顺利,会返回以下命令:

   这时候就能说明该环境(py3.7)已经注册到.local/share/jupyter/kernels/配置文件中了。这里要注意,命令行中--name 后面名字可以随便写,但是我们一定要在指定环境中输入以上命令行,如果你在python3.6环境中输入,此时注册的就是python3.6的内核(虽然内核名字叫做py3.7)。如果你在python3.9环境输入以上命令行,此时注册的就是3.9内核。

第三步:重启Jupyter服务

  重启jupyter服务之后(刷新页面也可以),我们就可以看到此处已经有其他的内核选项了。此时就说明内核添加成功了。

第四步:其他常用命令

   这里提供一些其他常用的命令。

  查看当前可用的kernel

jupyter kernelspec list

   使用这个命令需要注意,看下我的结果。

   箭头所指的环境是指当前环境下的jupyter内核,而从py3.7内核(第一行)的路径可以知道这个是公用的(根据前面的解释可以知道已经注册到了.local/share/jupyter/kernels/配置文件中),任何环境下都能看到这个py3.7这个内核。而第二行python3的这个内核其实就是当前环境的默认内核(如果你conda  activate 其他环境,这里会变的)。

  删除kernel:

jupyter kernelspec remove 内核名

 

 

参考网站:

为Jupyter notebook增加新的kernel_imbabao的博客-CSDN博客_jupyter 设置kernel

[Errno 13] Permission denied:’/usr/local/share/jupyter’_我是菜菜龙呀的博客-CSDN博客

推荐阅读