最可靠方案是直接修改jupyter_notebook_config.py中c.notebookapp.notebook_dir并取消注释,但需注意三点:快捷方式目标末尾硬编码%userprofile%会覆盖配置,须替换为真实路径并设好“起始位置”;路径字符串需用r前缀或双反斜杠避免转义错误;目标目录必须预先存在且用引号包裹。

直接改配置文件 jupyter_notebook_config.py 并取消 c.NotebookApp.notebook_dir 注释,是最可靠、一次生效的方案。但多数人失败不是因为步骤错,而是被快捷方式、路径格式、目录存在性这三处卡住。
为什么改了配置还是打开 C 盘?
Windows 下 Anaconda 自带的桌面/开始菜单快捷方式,目标(Target)末尾通常硬编码了 %USERPROFILE% —— 这会强制覆盖配置文件里的设置,哪怕你已经正确写了 c.NotebookApp.notebook_dir,也完全无效。
- 右键快捷方式 → 属性 → 快捷方式选项卡 → 查看“目标”字段
- 如果末尾是
%USERPROFILE%,删掉它,替换成你的真实路径,例如:D:Jupyter_Projects - 同时把“起始位置(Start in)”也改成同一路径,避免内核启动时回退到用户目录
- 路径含空格必须用英文双引号包裹,例如:
"D:My Jupyter"
c.NotebookApp.notebook_dir 路径怎么写才不报错
Python 会把单个反斜杠 当作转义字符,'C:Users
ame' 直接导致启动失败。必须处理路径字符串本身,而不是靠系统自动识别。
- 推荐写法:在字符串前加
r前缀,例如c.NotebookApp.notebook_dir = r'D:Jupyter_Projects' - 等效写法:用双反斜杠,例如
c.NotebookApp.notebook_dir = 'D:\Jupyter_Projects' - 路径必须是**已存在的文件夹**,Jupyter 启动时不会自动创建,目录不存在就会闪退或报错
FileNotFoundError - 路径要用英文单引号或双引号包裹,不能裸写
临时切换和命令行覆盖哪个更安全?
临时切路径只影响当前 Kernel,重启就失效;命令行参数则优先级最高,能绕过所有配置干扰,适合验证路径是否真有效。
- 临时切目录(仅当前 Notebook):
%cd D:MyProject或os.chdir(r'D:MyProject') - 命令行覆盖(跳过配置文件):
jupyter notebook --notebook-dir="D:Temp" - 注意:
--notebook-dir参数值含空格时必须加引号,且引号要和命令一起在终端里执行,不能写进快捷方式目标里(会被解析错误)
真正麻烦的从来不是改哪一行代码,而是 Windows 快捷方式偷偷接管路径、路径字符串没转义、目标文件夹还没手动建好——这三件事漏一个,配置就白改。











