直接改配置文件可永久生效,但路径写错、注释未删、目录不存在会导致失效;需用jupyter notebook --generate-config生成jupyter_notebook_config.py,按规范修改c.notebookapp.notebook_dir并确保目录存在、路径格式正确。

直接改配置文件就能永久生效,但路径写错、注释没删、目录不存在这三件事会让设置完全失效——浏览器照旧打开C盘,甚至启动失败。
怎么生成并定位 jupyter_notebook_config.py
配置文件不是默认存在的,必须手动触发生成。在 Anaconda Prompt(或 Windows CMD)里运行:
jupyter notebook --generate-config
它会输出类似 Writing default config to: C:Usersyourname.jupyterjupyter_notebook_config.py 的提示。这个路径就是你要编辑的文件位置。
- 如果之前生成过,这条命令不会覆盖,只提示“已存在”
- 多 Python 环境(比如 conda 多环境或 pip 单独装过 jupyter)可能导致配置文件被写到其他位置,务必以命令输出的路径为准
- 别去
C:Anaconda3etcjupyter或%PROGRAMDATA%下找——那些是系统级配置,Jupyter 优先读用户级.jupyter目录下的文件
c.NotebookApp.notebook_dir 怎么写才不报错
打开 jupyter_notebook_config.py,用 Ctrl+F 搜 c.NotebookApp.notebook_dir。原始行通常是:
#c.NotebookApp.notebook_dir = ''
要让它生效,必须同时满足四点:
- 删掉开头的
#,取消注释 - 删掉该行前面所有空格(Python 对缩进敏感,开头有空格会导致语法错误)
- 等号右边填**已存在的绝对路径**,例如
c.NotebookApp.notebook_dir = 'D:\Jupyter_Projects' - 路径中的反斜杠必须双写
\,或改用正斜杠/,或加前缀r'D:Jupyter_Projects';单个会被当转义符(比如变成换行),导致启动时直接崩溃
路径末尾不要加斜杠,也别用中文引号或全角字符——只允许英文单引号、双引号、ASCII 字符。
为什么改了还是打开 C 盘?常见失效原因
配置写对了,但 Jupyter 仍从 C 盘启动,大概率是以下某一种情况:
- 目标路径
D:Jupyter_Projects根本不存在——Jupyter 启动时会静默失败并 fallback 到默认路径,不会报错提示 - 用了 VS Code 的 Jupyter 扩展启动:它默认忽略
jupyter_notebook_config.py,走自己的工作区逻辑;得在 VS Code 设置里关掉 “Notebook: Global Launch” 或手动指定内核路径 - 双击桌面快捷方式启动:很多快捷方式目标是
jupyter-notebook.exe %USERPROFILE%,末尾的%USERPROFILE%会强制覆盖配置,删掉它 - 终端当前工作目录影响:在某个盘符下(比如输入
D:再运行jupyter notebook)会临时切换根路径,但这和配置无关,只是命令行行为
验证是否生效最简单的方法:关闭所有 Jupyter 进程,然后在干净的 Anaconda Prompt 里只输 jupyter notebook(不带任何参数),看浏览器左侧文件树是不是直接落在你设的目录里。
临时切路径用 %cd 还是 os.chdir()?
两者都能立刻改变当前 Kernel 的工作目录,但只对当前 Notebook 生效,重启 Kernel 就重置。推荐用魔法命令:
%cd D:/MyProject/data
比 import os; os.chdir(r'D:MyProjectdata') 更简洁,且支持 Tab 补全路径。注意:
-
%cd不接受反斜杠单写(%cd D:data会报错),统一用正斜杠或双反斜杠 - 它只改 Kernel 的
cwd,不影响 Jupyter 文件浏览器的根目录(即左侧树形结构) - 想看当前实际路径,运行
!pwd(Linux/macOS)或!cd(Windows),别信左上角地址栏——那显示的是服务器 URL 路径,不是磁盘路径
真正容易被忽略的是:配置文件修改后,必须确保没有其它进程(比如后台挂着的 jupyter lab、jupyter notebook server)正在运行,否则新配置不会加载。关掉所有相关窗口,再重新启动,才是验证的正确姿势。











