VS Code Jupyter中pickle保存模型报Read-only文件系统错误如何解决
问题原因
[Errno 30] Read-only file system: 'digits.pkl'报错的核心原因是:你当前运行的Jupyter Notebook工作目录为macOS的临时目录(从报错路径/var/folders/_x/q412fn8n5zxghsk407x6k_r40000gn/T/可确认),该目录默认无普通用户写入权限,使用相对路径保存文件会触发权限错误。
解决方案
你可以任选以下一种方法解决:
- 方法1:切换到有权限的工作目录后保存
首先执行代码查看当前工作目录:
确认输出为临时路径后,切换到你存放当前notebook的文件夹、或者你的个人用户目录下的任意文件夹,示例代码如下(替换为你自己的实际路径):import os print(os.getcwd())
切换完成后再执行原有的pickle保存代码即可正常写入。os.chdir("/Users/你的用户名/Documents/ai练习/") - 方法2:直接指定绝对路径保存
不需要修改工作目录,直接修改保存部分的代码,主动指定有权限的写入路径即可:import pickle # 替换为你自己的实际保存路径 full_save_path = "/Users/你的用户名/Documents/ai练习/digits.pkl" with open(full_save_path, "wb") as fp: pickle.dump(clf, fp) - 方法3:修改VS Code Jupyter默认工作目录配置(永久生效)
打开VS Code设置,搜索jupyter.notebookFileRoot,将配置值修改为${fileDirname},保存配置后重启Jupyter内核。之后所有notebook的默认工作目录都会和notebook文件本身所在目录保持一致,只要你把notebook存在个人用户目录下,就不会再出现写入权限问题。
注意事项
请确保你指定的保存路径对应的文件夹已经提前创建,路径中如果包含中文、空格也不需要额外转义,直接填写完整路径即可。
内容的提问来源于stack exchange,提问作者Eric
相关产品推荐
相关产品推荐

