在 WSL2 上安装 Anaconda 并使用 JupyterLab

首先

为了使用JupyterLab作为数据可视化、机器学习和数据挖掘工具,需要安装Anaconda。可以选择将其安装在本地的Windows环境中,但是希望尽量不影响本地环境,而且在Docker中创建环境似乎有点麻烦,因此决定在WSL2(Ubuntu-18.04)中安装Anaconda,并从那里使用JupyterLab。

在2021年7月8日修正后的~/.jupyter/jupyter_lab_config.py文件中,取消注释c.LabApp.open_browser = False,并添加c.LabApp.use_redirect_file = False。这样,每次执行$ jupyter lab时,窗口将自动弹出。

下载Anaconda安装程序

在适当的目录下运行以下命令,下载安装程序。URL 可以从此处的 Anaconda Installers 中查询。

$ wget https://repo.anaconda.com/archive/Anaconda3-2021.05-Linux-x86_64.sh

安装 Anaconda

因为在上述命令中,shell脚本已经被下载,所以可以在下方执行。

$ bash Anaconda3-2021.05-Linux-x86_64.sh

执行完上述操作后,按下 [Enter] 键会显示协议(可以使用 q 跳过),然后键入 [yes] 同意。然后会询问安装位置,保持默认即可继续进行。最后会询问是否执行 conda init 操作,选择 [yes] 将各种配置添加到 .bashrc 文件末尾。执行 source ~/.bashrc 命令使配置生效,此时屏幕显示类似于 (base) [用户名]:~$ 的界面。

运行Jupyter Lab

在这种情况下,即使运行Jupyter Lab,也会瞬间显示一些内容,但之后没有任何反应。经过调查,需要进行以下环境设置。

1. 创建 jupyter_lab_config.py

执行”$ jupyter lab –generate-config”命令后,将创建~/.jupyter/jupyter_lab_config.py文件。

向c.LabApp.open_browser添加False。

在设置文件~/.jupyter/jupyter_lab_config.py的末尾添加c.LabApp.open_browser = False,然后通过访问类似http://localhost:8888/lab?token=xxxxxxxxxx的URL来使用JupyterLab。

由于每次生成令牌并访问它很麻烦,所以参考使用远程Jupyter Lab的方法,同时执行以下设置。

3. 生成密码的哈希值

执行以下操作,将密码的哈希值(’sha1:xxxxxxxxxx’)复制并保存到文本文件等中。

$ ipython
In  [1]: from IPython.lib import passwd
In  [2]: passwd()
Out [2]: 'sha1:xxxxxxxxxx'
In  [3]: exit()

当您在 ~/.jupyter/jupyter_lab_config.py 文件末尾添加 c.LabApp.password =’sha1:xxxxxxxxxx’ 后,您可以通过运行 $ jupyter lab 并打开显示的 http://localhost:8888/lab 来无需令牌地访问 JupyterLab。

4. (2021/7/8 追記) 增加 c.LabApp.use_redirect_file = False

如果在配置文件 ~/.jupyter/jupyter_lab_config.py 的末尾添加 c.LabApp.use_redirect_file = False,那么执行 $ jupyter lab 将自动打开窗口。

如果 conda install 在 2021 年 6 月 21 日之后仍然无法成功,可以尝试以下解决方法。

在WSL2终端上运行”$ conda install [package]”时,以下错误不断重复,导致无法安装。

$ conda install [package]
Collecting package metadata (current_repodata.json): done
Solving environment: failed with initial frozen solve. Retrying with flexible solve.
Solving environment: failed with repodata from current_repodata.json, will retry with next repodata source.

按照解决方法,执行以下命令即可成功安装,当运行conda update时出现”Solving environment: failed”。

$ conda install anaconda
$ conda update --all

另外,有些包可能会出现PackagesNotFoundError:以下的包在当前渠道中不可用的错误,所以需要通过$ conda config –append channels conda-forge命令来添加软件源列表。(这个例子只是添加了conda-forge,其他软件源列表也可以以相同方式添加。)

要查看已添加的软件源列表,可以运行$ conda config –get channels命令,要删除软件源列表,可以运行$ conda config –remove channels conda-forge命令。

(2021/6/21 更新)JupyterLab的扩展功能。

根据JupyterLab的推荐安装扩展功能。使用以下命令安装并更新nodejs。

$ conda install nodejs
$ conda list | grep nodejs
nodejs                    6.13.1                        0    conda-forge
$ conda update nodejs
nodejs                    15.14.0              h92b4a50_0    conda-forge

可以在上述的情况下准备好安装扩展功能。

最后

虽然花了很多时间,但现在可以在WSL2上处理JupyterLab了。每次都访问localhost:8888/lab有点麻烦,有没有办法解决这个问题呢?