提问者:小点点

Windows Linux子系统(WSL2)和Jupyter实验室:如何打开保存在Linux文件系统中的Jupyter笔记本?


我在Windows上安装了一个Jupyter实验室。我在WSL Ubuntu上安装了Jupyter实验室。我可以在Linux终端上用Jupyter实验室的午餐。这将在Chrome浏览器上打开Jupyter实验室,从中我可以用Python[conda env:root]*创建一个新的Jupyter笔记本。但是,它仅显示windows文件系统。我尝试打开保存在Linux文件系统上的笔记本,使用:
$jupyter lab my\u Linux\u folder/my\u notebook。ipynb

Jupyter lab午餐成功,但无法打开Linux文件系统上的笔记本,并出现错误:

无法打开
找不到路径:/my\u笔记本。ipynb

可以打开Linux文件系统“\wsl$\”上的笔记本吗?如何打开
如何从JupyterLab文件浏览器转到“\wsl$\”
或者更一般地说,如何打开保存在“\wsl$\”下的笔记本?


共3个答案

匿名用户

每次启动WSL2时,WSL2都会发出一个动态IP地址——请参阅MSFT文档。

就我个人而言,我在一个子shell中运行一个Python命令来打印那个IP:

jupyter lab --ip $(python3 -c "import subprocess; subprocess.run(['hostname', '-I'], text=True).stdout")

这适用于我在Ubuntu 20.04和Windows 10构建19041.329。

注意:您可能必须访问该IP地址,而不是localhost,以及运行Jupyter的端口,例如。超文本传输协议://: 8888。

要通过CLI获取我的IP地址,我使用:

ip addr | grep eth0 | grep inet

我选择第一个可用的IP地址,通常使用不带子网掩码的地址,即正斜杠数。

匿名用户

更新:

您可以通过修改配置文件来访问Linux文件。您需要允许root访问并指定Jupyter Notebook目录。该目录从Linux文件系统的根目录开始。您也可以从Windows文件系统/mnt/c/user/admin/. jupyter启动。

{
    "NotebookApp": {
        ...
        "allow_root": true,
        "notebook_dir": "/home/admin/.jupyter",
        ...
    }
}

原件:

您需要将Jupyter Notebook文件保存在Linux文件系统上的特殊原因是什么?WSL可以完全访问Windows文件系统,因此文件保存在哪里并不重要。

要补充Jason的观点:

显然,WSL 2使用一个具有自己IP地址的虚拟网络适配器。它还会在每次重新启动服务器时更改IP地址。手动更新IP地址很烦人,所以我写了一个脚本来自动更新它。

我写了一篇关于如何做的文章,让每个人都更容易:

如何在Linux 2的Windows子系统(WSL2)上设置Jupyter笔记本家庭和公共服务器

所附照片是运行在WSL2上的笔记本,保存在Windows 10文件系统上。

匿名用户

运行此命令,这将在您的eth0 ip地址上运行笔记本。

jupyter notebook --no-browser --ip `ip addr | grep eth0 | grep inet | awk '{print $2}' | cut -d"/" -f1`

# Get eth0 IP address
HOST_ETH0_IP=`ip addr | grep eth0 | grep inet | awk '{print $2}' | cut -d"/" -f1`
# Run jupyter notebook for the IP address
jupyter notebook --no-browser --ip $HOST_ETH0_IP

HOST_ETH0_IP=`ip addr | grep eth0 | grep inet | awk '{print $2}' | cut -d"/" -f1`
jupyter lab--no-browser --ip $HOST_ETH0_IP

如果你能在jupyter配置中设置ip地址

jupyter lab --generate-config
vim ~/.jupyter/jupyter_notebook_config.py

然后复制并粘贴ip addr | grep eth0 | grep inet | awk'{print$2}'| cut-d/-f1的输出

c.NotebookApp.ip = 'HOST_ETH0_IP'