vs code中notebook的输出与缓存本质不同:输出是运行时ui渲染内容,缓存是后台静默保存的数据;需分别管理——限制textlinelimit、pandas显示选项、及时del变量可防界面卡死;重启内核不清理插件/内核连接/持久化变量等缓存;安全清理应针对cache、jupyter插件目录及临时输出缓存,避免误删扩展;--cache-dir仅影响vs code自身缓存,与jupyter环境变量无关。

VS Code 中的 Jupyter Notebook 输出和缓存不是一回事,但容易被混为一谈:输出(比如 print()、plt.show()、大表格)是运行时渲染在 UI 上的内容;缓存(比如内核变量快照、中间计算结果、插件本地存储)是后台静默保存的数据。两者清理方式、影响范围、触发时机完全不同——搞错对象就可能白忙活,甚至误删配置。
如何控制 Notebook 单元格输出不撑爆界面
大输出(如 df.head(10000)、np.random.rand(5000, 5000))会卡死渲染、拖慢滚动、让 Notebook 文件体积暴涨。VS Code 默认不限制,得手动干预:
- 在设置中搜索
notebook.output.textLineLimit,设为100或200(默认是-1,即不限制) - 对 pandas DataFrame,提前加
pd.set_option('display.max_rows', 20)和pd.set_option('display.max_columns', 10) - 绘图时避免无节制调用
plt.show();用%matplotlib inline后,单个单元格只保留最后一次绘图结果 - 执行完大计算后,立刻运行
del large_var+import gc; gc.collect(),否则变量驻留内存,后续输出仍可能触发重绘
为什么“重启内核”不等于清空所有缓存
点击 Restart Kernel 只重置 Python 进程里的变量和状态,但以下数据完全不受影响:
-
vscode-jupyter插件在~/.vscode/extensions/ms-toolsai.jupyter-*/out/下保存的会话元数据(如上次执行时间、断点位置) - 用户主目录下
.jupyter/runtime/中的 kernel connection 文件(JSON 格式,含端口、密钥),下次启动仍复用 - 某些扩展(如
ms-python.python)在项目根目录生成的.ipynb_checkpoints/和__pycache__/,属于文件系统级缓存 - 如果你用过
%store魔法命令,变量已持久化到~/.ipython/profile_default/db/,重启内核也不丢
这些残留项会导致“明明重启了,为啥上次报错还在?”——本质是上下文没真正归零。
哪些缓存该删、怎么删才安全
真正需要人工干预的缓存分三类,路径和风险各不同:
-
VS Code 主缓存:路径为
~/.config/Code/Cache(Linux/macOS)或%APPDATA%\Code\Cache(Windows)。删它可缓解启动卡顿、UI 渲染异常,但不影响 Notebook 内容或设置 -
Jupyter 插件缓存:集中在
~/.vscode/extensions/ms-toolsai.jupyter-*/out/和~/.jupyter/migrated/。这里存着 notebook 打开历史、内核选择偏好,删后首次打开稍慢,无功能损失 -
用户级临时输出缓存:比如你导出过 HTML 或 PDF,VS Code 可能存过中间产物在
~/.vscode/Cache/jupyter/(非标准路径,需find ~/.vscode -name "*jupyter*" -type d 2>/dev/null检索)。这类可放心删,但别碰UserData下的settings.json
别用“全删 ~/.vscode/extensions”这种粗暴方式——那会连已安装插件一起干掉,得重装。
缓存路径能改吗?能,但注意作用域
VS Code 支持运行时指定缓存位置,但仅限启动参数,不支持配置文件写死:
- 想把缓存挪到 D 盘?启动快捷方式目标栏末尾加:
--cache-dir "D:\VSCodeCache" - 想同时迁移插件和用户数据?加两个参数:
--user-data-dir "D:\VSCodeData" --cache-dir "D:\VSCodeCache" - 注意:
--cache-dir不影响 Jupyter 内核本身的缓存(如~/.jupyter),那是 IPython/Jupyter 自己管的 - 命令行启动时若用了
--user-data-dir,那settings.json、插件、扩展缓存全走新路径,旧路径残留可手动清
最易被忽略的一点:VS Code 的 --cache-dir 和 Jupyter 的 JUPYTER_DATA_DIR 环境变量互不感知——改了一个,另一个照常往默认位置写,磁盘空间照样涨。











