修改c.notebookapp.notebook_dir仅限制可访问根目录范围,不决定浏览器初始展示位置;真正起始目录由启动时os.getcwd()决定,最可靠方式是先cd进目标目录再运行jupyter notebook。

配置文件里改 c.NotebookApp.notebook_dir 不等于“起始目录”
很多人以为改了 c.NotebookApp.notebook_dir 就能让 Jupyter 打开时自动定位到那个路径,实际不是。这个配置项只限制 Jupyter **能访问的根目录范围**,不控制浏览器一打开就显示哪个子目录。如果你设了 c.NotebookApp.notebook_dir = 'D:\notebooks',但启动时终端在 C:\,它仍会从 C:\ 开始加载——只要该路径在 D:\notebooks 内;否则直接报 404 或拒绝访问。
真正生效的路径由启动时的 os.getcwd() 决定
Jupyter 启动时默认把当前工作目录(即终端执行 jupyter notebook 时所在的路径)作为初始展示位置。所以最稳的方式是:先 cd 进目标目录,再运行命令。
- Windows CMD:
cd /d D:myproject && jupyter notebook - PowerShell:
Set-Location D:myproject; jupyter notebook - macOS/Linux:
cd /path/to/project && jupyter notebook
这招绕过所有配置文件和快捷方式陷阱,100% 可控,且兼容 JupyterLab 和 Notebook。
使用ydata-profiling(前身为pandas-profiling)生成全面的数据质量报告,包含相关性分析、缺失值模式和基数检测。导出交互式HTML仪表板和JSON摘要。
c.NotebookApp.notebook_dir 的正确写法和常见报错
如果仍想用配置文件,必须注意三点:
- 路径必须是**已存在的绝对路径**,末尾不能带斜杠(
'D:\notebooks\'❌ →'D:\notebooks'✅) - Windows 下反斜杠必须双写(
'D:\data'),或统一用正斜杠('D:/data') - 配置生效前要确认没被命令行参数覆盖:比如快捷方式目标里还留着
%USERPROFILE%,或你手动加了--notebook-dir=...,都会让配置失效 - 错误示例:
OSError: [Errno 2] No such file or directory,大概率是路径不存在,或用了相对路径(如'./notebooks'),它会相对于配置文件位置而非你执行命令的位置
JupyterLab 4.0+ 才开始有限支持该配置
旧版 JupyterLab(尤其是 1.x–3.x)基本忽略 c.NotebookApp.notebook_dir,只认 --notebook-dir 参数或启动目录。如果你用的是 Anaconda 自带的旧版本 Lab,改了配置也白改。验证方法:启动后看左上角地址栏是否显示你设的路径;没显示,说明配置未被读取。
真正难搞的不是怎么写配置,而是搞清「谁在控制起始位置」——终端当前路径、快捷方式目标、命令行参数、配置文件,四者有优先级,改错一个就白忙活。










