根本原因是Jupyter默认用file://协议打开本地HTML跳转页,被Chrome等浏览器安全策略拦截;应禁用重定向文件并设c.NotebookApp.use_redirect_file=False和c.NotebookApp.browser='windows-default'。

为什么 jupyter notebook 启动后浏览器不弹出
根本原因不是 Jupyter 没跑起来,而是它默认尝试用 file:// 协议打开一个本地 HTML 跳转页(比如 file:///C:/Users/xxx/.jupyter/runtime/notebook-open.html),而 Chrome、Edge 等现代浏览器出于安全策略会直接拦截这类本地文件访问,页面显示「无法访问您的文件」或空白。此时终端里其实已输出 http://localhost:8888/tree 这样的有效地址,只是自动跳转链断了。
永久禁用 file:// 跳转,改用 http:// 直连
这是最干净的解法,避免所有浏览器兼容性问题:
- 在 Anaconda Prompt 中运行
jupyter notebook --generate-config,按提示输入y - 打开生成的配置文件:
C:Users你的用户名.jupyterjupyter_notebook_config.py - 在文件末尾添加两行(注意是
c.NotebookApp.use_redirect_file=False,不是c.ServerApp):c.NotebookApp.use_redirect_file = False<br>c.NotebookApp.browser = 'windows-default'
- 保存,彻底关闭所有终端和浏览器窗口,再重新运行
jupyter notebook
加了这两行后,Jupyter 不再生成临时 HTML 文件,而是直接调用系统默认浏览器打开 http://localhost:8888/tree,绕过所有 file 协议限制。
手动指定浏览器路径时容易错的三个地方
如果非要硬编码浏览器路径(比如必须用 Chrome),以下三点不注意就会白配:
-
webbrowser.register()里的路径必须用双反斜杠\,单斜杠/或单反斜杠都会报错,例如:u'C:\Program Files\Google\Chrome\Application\chrome.exe' - 注册名(如
'chrome')和赋值给c.NotebookApp.browser的字符串必须完全一致,大小写敏感 - 路径必须指向
.exe文件本身,不是快捷方式,也不是安装目录;可用chrome://version/在浏览器里查真实路径
防火墙和权限问题常被忽略
即使配置全对,仍打不开,优先检查这两点:
- Windows 防火墙可能拦截了
python.exe或jupyter-notebook.exe的出站连接,临时关闭防火墙测试一下 - 如果用管理员权限启动 Anaconda Prompt 时能打开,普通权限打不开,说明当前用户对
.jupyter目录或运行目录缺少读写权限,右键文件夹 → 属性 → 安全 → 编辑 → 给当前用户勾上“完全控制” - 不要依赖“复制 URL 到浏览器”作为长期方案——每次端口变、token 变、服务重启都要重复制,配置一次一劳永逸


















