跳到主要内容

在 WSL 中使用 Jupyter

如果你已经习惯在 WSL 里装 Python、conda 和项目依赖,那么把 Jupyter 也放在 WSL 里运行通常会更顺手。这样可以避免:

  • Windows 和 WSL 两边各装一套环境
  • Notebook 能打开,但实际执行内核不是你以为的那个环境
  • 文件明明在 WSL 里,却从 Windows 环境里绕一圈去访问

这篇文档不重复讲 Jupyter 的完整配置,而是只关注 WSL 里最常见的访问方式。

最常见的使用方式​

最常见也最省事的模式其实是:

  1. 在 WSL 中启动 Jupyter
  2. 在 Windows 浏览器里通过 localhost 打开

很多情况下,你甚至不需要再额外做 SSH 或防火墙配置。

1. 在 WSL 中启动 Jupyter​

如果你的环境里已经安装了 Jupyter,可以直接启动:

jupyter lab --no-browser --ip=0.0.0.0 --port=8888

如果你更习惯 Notebook:

jupyter notebook --no-browser --ip=0.0.0.0 --port=8888

这里的关键点有两个:

  • --no-browser:避免 WSL 试图在 Linux 环境里直接开图形浏览器
  • --ip=0.0.0.0:让服务监听所有网卡,减少地址绑定导致的访问问题

启动后,终端通常会打印一段包含 token 的访问地址。

2. 在 Windows 浏览器中访问​

WSL2 对 Windows 本机访问 Linux 服务的支持已经比较成熟,所以很多场景下直接打开:

http://localhost:8888

就能访问到刚才在 WSL 中启动的 Jupyter。

如果终端输出了带 token 的完整链接,优先直接复制那条地址到 Windows 浏览器中打开。

3. 如果你使用 VS Code Remote​

如果你本来就是通过 VS Code 远程连接到 WSL,另一种很稳的方式是直接使用端口转发,而不是自己记 token 链接。

可以直接参考:

这对以下场景尤其方便:

  • 你同时开了多个 Notebook 或 Lab 端口
  • 你不想每次都手工复制 token 链接
  • 你已经在 VS Code Remote 环境里工作

4. 什么时候该回到通用 Jupyter 文档​

如果你的问题不是“WSL 如何访问”,而是下面这些更通用的配置问题:

  • 如何设置密码
  • 如何写 jupyter_server_config.py
  • 如何后台运行
  • 如何指定默认目录

那么直接看:

这篇 WSL 文档只负责把“在 WSL 中启动,再从 Windows 侧访问”这层补清楚。

最小排错顺序​

如果浏览器打不开,建议按这个顺序查:

  1. WSL 里 jupyter lab --no-browser --ip=0.0.0.0 --port=8888
  2. WSL 里 ss -lntp | grep 8888
  3. Windows 浏览器访问 http://localhost:8888
  4. 如果是 VS Code Remote,就检查端口转发面板
  5. 如果端口冲突,换一个端口再试

常见换端口方式:

jupyter lab --no-browser --ip=0.0.0.0 --port=9999

常见问题​

1. 浏览器能打开页面,但执行的环境不对​

这通常不是 WSL 网络问题,而是你启动 Jupyter 的 shell 环境和你以为的 Python 环境不是同一个。先确认你是不是在目标虚拟环境里启动的 Jupyter。

2. 为什么不建议在 WSL 里直接弹浏览器​

大多数人的 WSL 主要还是终端环境。把浏览器留在 Windows 侧,Jupyter 留在 WSL 侧,分工会更清楚。

3. 我能不能让局域网其他机器也访问这个 Jupyter​

可以,但那已经不是“WSL 本机访问”问题了,而是“把 WSL 服务暴露到 Windows 乃至局域网”的问题。做法和 SSH 一样,需要额外考虑转发和安全面暴露。除非你明确需要,否则不建议把 Notebook 直接暴露到局域网。

关联阅读​