permissionerror通常源于jupyter无法写入runtime目录,windows路径为c:users\appdata oamingjupyter untime,linux/macos为~/.local/share/jupyter/runtime;应优先修改该目录权限或通过jupyter_runtime_dir重定向。

PermissionError: [Errno 13] Permission denied 出现在哪
错误通常不是出在 notebook 文件本身,而是 Jupyter 启动时试图写入两个关键位置:C:Users\AppDataRoamingjupyter
untime(Windows)或 ~/.local/share/jupyter/runtime(Linux/macOS)。日志里看到 Failed to write server-info to ... jpserver-xxxxx.json 或 notebook_cookie_secret,就说明卡在这儿了。
直接改 runtime 目录权限(Windows 用户首选)
这是最直白、见效最快的解法,尤其适合单机开发环境:
- 打开文件资源管理器,导航到
C:Users\AppDataRoamingjupyter untime - 右键
runtime文件夹 →「属性」→「安全」→「编辑」 - 选中当前登录用户 → 勾选「完全控制」→「确定」
- 如果提示“无法应用更改”,先点「高级」→「更改所有子对象的权限」→ 勾选「替换所有子对象的权限项」
注意:别去动 C:WindowsSystem32 或 AppDataLocal 下的 jupyter 目录——那些不是 runtime 所在位置,改错地方反而可能引发系统问题。
用环境变量重定向 runtime 目录(企业/多用户环境)
当没有管理员权限、或策略禁止修改 AppDataRoaming 时,用 JUPYTER_RUNTIME_DIR 更稳妥:
- 新建一个你有完全写入权的目录,比如
C:jupyter_runtime - 在启动前设置环境变量(PowerShell):
set JUPYTER_RUNTIME_DIR=C:jupyter_runtime
- 或者永久生效:系统属性 → 高级 → 环境变量 → 新建用户变量,名称
JUPYTER_RUNTIME_DIR,值填完整路径 - 确认该目录为空或已清空旧文件,否则残留锁文件仍会报错
这个方法绕开了系统目录权限博弈,但要注意每次启动前环境变量必须生效——如果用 Anaconda Prompt 启动,得确保它继承了新变量(有时需重启终端)。
别碰 chmod 777,也别硬改 notebook_dir 来治 runtime 错误
chmod 777 是 Linux 下常见但危险的操作,对 Windows 无效;而修改 c.NotebookApp.notebook_dir 只影响 notebook 存放位置,跟 runtime 写入失败毫无关系。很多人混淆这两者,结果改完配置仍报错。
真正要盯住的是错误日志里的路径关键词:runtime、jpserver-、notebook_cookie_secret —— 它们指向的才是权限瓶颈所在。其他路径(如 kernel 目录、config 文件)出问题时,错误信息会明确带出对应文件名,不要一概而论。











