在 WSL 中使用 Jupyter
如果你已经习惯在 WSL 里装 Python、conda 和项目依赖,那么把 Jupyter 也放在 WSL 里运行通常会更顺手。这样可以避免:
- Windows 和 WSL 两边各装一套环境
- Notebook 能打开,但实际执行内核不是你以为的那个环境
- 文件明明在 WSL 里,却从 Windows 环境里绕一圈去访问
这篇文档不重复讲 Jupyter 的完整配置,而是只关注 WSL 里最常见的访问方式。
最常见的使用方式
最常见也最省事的模式其实是:
- 在 WSL 中启动 Jupyter
- 在 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 侧访问”这层补清楚。
最小排错顺序
如果浏览器打不开,建议按这个顺序查:
- WSL 里
jupyter lab --no-browser --ip=0.0.0.0 --port=8888 - WSL 里
ss -lntp | grep 8888 - Windows 浏览器访问
http://localhost:8888 - 如果是 VS Code Remote,就检查端口转发面板
- 如果端口冲突,换一个端口再试
常见换端口方式:
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 直接暴露到局域网。