跳到主要内容

在 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 直接暴露到局域网。

关联阅读