绝大多数PermissionError错误源于Jupyter runtime目录权限不足,删掉%USERPROFILE%AppDataRoamingjupyter untime或~/.jupyter/runtime/下文件最有效;若仍报错,应配置c.NotebookApp.notebook_dir指向自有权限目录并确保其存在。

直接说结论:绝大多数 PermissionError: [Errno 13] Permission denied 错误,不是 Jupyter 本身坏了,而是它试图写入的目录(通常是 %USERPROFILE%AppDataRoamingjupyter
untime 或 ~/.jupyter/runtime/)你没权限写。
为什么 runtime 目录会没权限?
Windows 上这个路径属于系统保护区域,尤其在管理员账户下安装、或系统升级后,runtime 文件夹可能继承了受限权限;Linux/macOS 下则常因用 sudo 启动过 Jupyter,导致 runtime/ 下文件属主变成 root,普通用户再启动就卡住。
典型报错位置包括:
jpserver-XXXXX-open.htmljpserver-XXXXX.jsonnotebook_cookie_secret-
Untitled.ipynb(新建 notebook 时)
删 runtime 文件夹比改权限更稳妥
临时文件夹里存的全是运行时状态,删了不影响你的 notebook 文件,重启 Jupyter 会自动重建。比折腾 ACL 或 chmod 更快、更少副作用。
操作步骤:
- 关掉所有
jupyter notebook或jupyter lab进程(任务管理器 /ps aux | grep jupyter) - 定位到
%USERPROFILE%AppDataRoamingjupyter untime(Windows)或~/.jupyter/runtime/(macOS/Linux) - 全选里面所有文件(
jpserver-*.json、jpserver-*-open.html、notebook_cookie_secret等),直接删除 - 重新运行
jupyter notebook
如果删完还报错,说明问题不在 runtime,而是 notebook 默认工作目录(比如桌面或 C:UsersXXX)被系统策略锁死 —— 这时就得换工作目录。
改 notebook_dir 是一劳永逸的办法
让 Jupyter 别往敏感路径写东西,指定一个你 100% 有权限的目录作为根目录。关键不是“怎么配”,而是“配对位置”和“目录必须存在”。
执行以下命令生成配置(如果还没生成过):
jupyter notebook --generate-config
打开生成的配置文件(路径一般为 ~/.jupyter/jupyter_notebook_config.py 或 %USERPROFILE%.jupyterjupyter_notebook_config.py),找到这一行:
#c.NotebookApp.notebook_dir = ''
把它改成(注意去掉开头的 #,且前面不能有空格):
c.NotebookApp.notebook_dir = 'D:\MyJupyter'
然后手动创建该目录(D:MyJupyter),再启动。Jupyter 就只会读写这个目录及其子目录,完全绕开权限陷阱。
常见坑:
- 路径用了反斜杠
却没加r''或双反斜杠\,导致 Python 解析出错 - 目录不存在就启动,Jupyter 会静默失败或闪退
- 路径含中文或空格,在某些旧版本中可能触发编码问题(建议用纯英文路径)
别碰 chmod 777 或管理员运行
给 runtime 或 .jupyter 目录设 chmod 777(Linux/macOS)或“完全控制”(Windows)看似解气,但实际埋雷:
- 下次系统更新可能重置权限,问题复现
- 安全软件可能拦截异常权限变更
- 多用户环境里,把
.jupyter权限放开等于暴露 cookie secret
真正要改权限的地方,只有你自己新建的 notebook_dir 目录 —— 而且只需保证当前用户有读写权,不用全员可写。
最易被忽略的一点:错误日志里出现的路径,90% 都是真实写入目标。盯住报错里那个具体文件路径,而不是凭经验去改别的目录。


















