最可靠方式是在终端中先进入目标目录再启动Jupyter:Linux/macOS用cd && jupyter notebook,Windows用cd /d或Set-Location;--notebook-dir参数可强制跳转但限制保存范围;修改配置文件仅控制访问根目录而非初始打开位置。

启动 Jupyter 时指定工作目录最可靠
Jupyter Notebook 和 JupyterLab 启动时默认使用当前终端所在路径,不是 Python 安装路径,也不是用户主目录——这点很多人误判。想让它一打开就进 /home/user/project,最稳的方式是**在终端里先进入目标目录再启动**:
- Linux/macOS:
cd /path/to/your/project && jupyter notebook - Windows(CMD):
cd /d D:myproject && jupyter notebook - Windows(PowerShell):
Set-Location D:myproject; jupyter notebook
别指望改完配置文件就能“永久生效”——Jupyter 不读取系统级默认路径配置,它只认启动时的当前工作目录(os.getcwd())。很多教程让你改 jupyter_notebook_config.py 里的 c.NotebookApp.notebook_dir,但这个参数只限制可访问的根目录范围,**不改变初始打开位置**,还可能引发 404 或权限报错。
用 --notebook-dir 参数强制跳转目录
如果实在不想每次 cd,可以用命令行参数绕过当前路径。注意:这不是“设置默认路径”,而是“启动时跳转到指定路径”:
jupyter notebook --notebook-dir="/path/to/project"jupyter lab --notebook-dir="C:worknalysis"
这个参数会把 Jupyter 的根目录设为该路径,并自动在浏览器中打开该目录下的文件列表。但它有个硬限制:后续新建 notebook 只能保存在该目录或其子目录下;试图用“上传”或“新建”操作写到外面会失败,报错信息通常是 403 Forbidden 或 Permission denied。另外,Windows 路径里反斜杠 容易被 shell 当转义符处理,建议统一用正斜杠 / 或双反斜杠 \。
立即学习“Python免费学习笔记(深入)”;
让 macOS 自动化像说话一样简单 —— 用代码控制你的 Mac,无需学习 AppleScript 系统要求 macOS 14+ (Sonoma) Python 3.9+ 需要开启:辅助功能 + 屏幕录制权限
修改 jupyter_notebook_config.py 的常见误区
生成配置文件后,有人直接改 c.NotebookApp.notebook_dir = '/my/path' 就以为万事大吉。实际踩坑点很集中:
- 路径必须存在且有读写权限,否则 Jupyter 启动直接报错:
OSError: [Errno 2] No such file or directory - 路径末尾不能带斜杠(
/path/❌),必须是/path✅,否则可能触发内部路径拼接异常 - 如果用了相对路径(如
./notebooks),它相对于配置文件所在位置,不是你执行jupyter notebook的位置——极难调试 - JupyterLab 1.x+ 默认忽略这个配置项,只认
--notebook-dir或启动目录;Lab 4.0+ 才开始有限支持
所以除非你有严格的安全隔离需求(比如只允许访问某几个固定目录),否则不建议动这个配置项。它解决的不是“默认打开哪”,而是“最多允许访问哪”。
在 notebook 里临时切工作目录要小心
运行单元格时用 os.chdir() 或 %cd 魔法命令确实能改当前 kernel 的工作目录,但效果仅限于本次 session:
-
%cd /tmp/data—— 下次重启 kernel 就失效 -
import os; os.chdir('/tmp/data')—— 同上,且不会影响其他 kernel - 但
!pwd或!ls看到的是 kernel 当前路径,而File → Open对话框仍按 Jupyter 启动时的路径展示
这意味着:你用 %cd 切到子目录后,用 !python script.py 能正常跑,但双击打开同目录下的另一个 .ipynb 文件,Jupyter 会提示“找不到”,因为它还在原始启动目录里找。这种“视觉路径”和“执行路径”分离,是新手最常懵圈的地方。
真正需要多项目切换的话,与其折腾全局配置,不如习惯用不同终端窗口分别进入各项目目录启动 Jupyter。路径这事,手动 cd 一次比调半天配置更省时间、更少出错。

















