之前在用 Jupyterlab 的时候,用哪个 conda 环境,想用这个环境下的 Python 作为 kernel 就只能在对应环境下再安装一个 jupyterlab。这种方法既引入了额外的存储空间占用,又没有灵活性。我更期望的是能够在一个 jupyterlab 下,可以对每个 ipynb 文件指定不同的 kernel。
幸运的是,经过一番搜索,解决方案并不困难。下面是需要做的步骤:
-
假设我们的 jupyterlab 安装在 conda 的
jupyter_env
环境下,在命令行通过命令conda activate jupyter_env jupyter lab --port=8888
来启动 jupyterlab;
-
新建需要增加到 jupyterlab 的 python kernel 对应的 conda 环境,这里新建的环境名称为
test_env
,你可以更换为你自定义的名字(如果已经有了对应的环境,则不需新建,可以跳过这步):# 这里使用的 Python 版本为 3.9,你可以根据实际更改到想要的 Python 版本 conda create -n test_env python=3.9
-
切换到新建的环境中,并安装
ipykernel
,使之能够被 jupyterlab 使用:conda activate test_env conda install ipykernel
随后注册这个环境下的 kernel,使其能够被 jupyterlab 发现:
python -m ipykernel install --user --name <name> --display-name <display name>
命令
python -m ipykernel install
做了什么?上面的命令将以 install 模式运行
ipykernel
module。运行后,文件系统中将会新建描述 kernel 的 JSON 文件和图标文件。在 Windows 中该 JSON 文件位于C:\Users\username\AppData\Roaming\jupyter\kernels
目录,文件内容为{ "argv": [ "path\\to\\kernel\\exec", "-m", "ipykernel_launcher", "-f", "{connection_file}" ], "display_name": "display name", "language": "python", "metadata": { "debugger": true } }
jupyterlab 会检查此目录下的 kernel 描述文件。因此,有了 kernel 描述文件后,就可以在 jupyterlab 上使用对应的文件了。
此时,打开浏览器中 jupyterlab 对应的界面(或刷新网页),即可看到新的 kernel 加入了进来。