1.安装

在服务器上安装 Jupyter Lab

1
2
3
$ pip install jupyterlab
# 或者
$ conda install -c conda-forge jupyterlab

2.启动

1
2
3
$ jupyter-lab
# 常带参数
$ jupyter-lab --no-browser --port 8889 # 不自动打开浏览器 + 指定 8889 端口

在服务器的浏览器中输入终端输出的地址,即可在服务器中打开(当然这不是我们最终的目标)。

注:服务器中的 Jupyter Lab 需要常驻,可以使用 nohup 让其后台运行。但笔者这里并没有使用 nohup,而是选用了终端复用工具 tmux。


3.本地远程访问

① 配置文件

依旧是在服务器终端中进行以下操作:

1
2
3
4
5
# 生成 hash 密码
>>> from jupyter_server.auth import passwd
>>> passwd()
# 依据提示输入两遍设置的密码,从而会得到一个类似于下面的密钥
# 'sha1:51ef0f912be4:e77e57968f64be1818f836315465a4dc39fdd35c'
1
2
# 生成配置文件
jupyter-lab --generate-config

修改 ~/..jupyter/jupyter_lab_config.py 中的以下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
c.ServerApp.allow_remote_access = True
c.ServerApp.ip = '*'

# 启动时不自动打开浏览器
c.ServerApp.open_browser = False
c.LabServerApp.open_browser = False
c.ExtensionApp.open_browser = False
c.LabApp.open_browser = False

# 添加刚刚生成的密钥
c.ServerApp.password = 'sha1:51ef0f912be4:e77e57968f64be1818f836315465a4dc39fdd35c'

# 根据个人需要修改端口号(默认 8888)
c.ServerApp.port = 8889

注:网上多为 Jupyter Notebook 的配置教程,hash 码生成使用的是以下语句,这样无法对 Jupyter Lab 生效。

1
2
>>> from notebook.auth import passwd
>>> passwd()

② 端口转发

该部分是在本地电脑上进行操作。

如果要实现在本地上访问服务器的 Jupyter Lab,还需要端口转发。

端口转发有很多种方式,笔者这里选择的是 SSH。在本地的终端(如 windows 的 cmd)输入:

1
$ ssh -N -L localhost:8887:localhost:8889 username@ip

说明:

  • 前一个 localhost:8887 用于指定本地浏览的端口 (可以任意指定,比如我设定的是 8887)
  • 后一个 localhost:8889 则必需与上述服务器使用的端口保持一致
  • username@ip 则填服务器的用户名和地址

PS:

上述端口转发命令必需要终端保持常驻,实现上不是很优雅,这里推荐一些终端工具来保持连接,比如 Putty 或者 MobaXterm。笔者用的是 MobaXterm,其中有一个 SSH Tunneling 即 SSH 隧道选项,具体细节不表。

③ 本地启动

此时,在本地电脑的浏览器地址栏中输入 localhost:8887,即可打开 Jupyter Lab。

注:第一次登入需要输入刚刚设置的密码,可以利用浏览器保存密码的功能在下一次使用时免密登录。


4.让 Jupyter Lab 变成一个桌面应用

如果每次启动 Jupyter Lab 都要在浏览器中输入地址,一是不方便,二是浏览器中的书签栏、地址栏实际上是很多余的部分。

如果你使用的是 Edge、Chrome 这类基于 Chromium 的浏览器:

1
点击浏览器右上角的 3 个点(设置) --> 更多工具 --> 创建快捷方式 --> 在弹出的窗口中勾选上 `在窗口中打开`

此时,在桌面上能看到带有 Jupyter Lab 图标的快捷方式,而现在可以像打开一般的应用一样愉快地使用上 Jupyter Lab 了~


5.在 Jupyter 中添加新的 Python 内核

以 conda 为例:

1
2
3
4
5
6
7
8
9
# 安装 ipykernel
$ conda install ipykernel

# 将环境写入notebook的kernel中
$ python -m ipykernel install --user --name 环境名称 --display-name "在jupyter中显示的环境名称"
# 比如已经有个叫 `gpu` 的 conda 环境,希望在 Jupyter 的内核选择中显示为 `deeplearning`
$ python -m ipykernel install --user --name gpu --display-name "deeplearning"

# 如果不带 --display-name 参数,则与与环境名同名,在上述的例子里就是 `gpu`

移除内核:

1
jupyter kernelspec remove 'kernalname'

查看有哪些内核:

1
jupyter kernelspec list

参考资料