登录
推荐 文章 Go 技术 课程 下载 专题 AI
首页 >  文章 >  软件教程

VS Code Notebook 怎样设置单元格运行顺序

来源:17golang原创

时间:2026-11-14 20:33:08 107浏览 收藏

VS Code Notebook 没有一个需要单独打开的“固定运行顺序”开关。真正决定执行结果的是三件事:单元格在 Notebook 中的排列、当前选中单元格对应的运行范围,以及内核里是否还保留着旧变量。把这三层理顺后,就能按依赖关系运行,而不是反复猜哪个单元格先执行。

官方地址:https://code.visualstudio.com/

要点速览
  • 先在右上角 Kernel Picker 选对内核,再判断运行结果。
  • 选中目标单元格后,用 Run Above、Run Below 或 Run All 控制执行范围。
  • 需要改变依赖顺序时移动单元格;出现旧状态干扰时清理输出或重启内核。

步骤一:打开 Notebook 并确认内核

在 VS Code 工作区打开 .ipynb 文件。先看 Notebook 编辑器右上角的 Kernel Picker,选择实际安装了 Jupyter 内核的 Python 环境。不要在内核未选定时急着连续运行,因为此时即使界面能显示单元格,依赖检查也没有可靠基础。

选择完成后,再看每个代码单元格右下角的语言提示。它应与当前内核支持的语言一致。若右上角仍显示选择内核,先处理环境或扩展问题;如果工作区处于 Restricted Mode,代码单元格也可能无法执行。

检查点:右上角出现已选内核名称,单元格左侧的运行按钮可用。此时只运行最小的准备单元格,确认输出区域能正常出现。

步骤二:用运行范围控制执行顺序

点击要作为基准的单元格,使它进入选中状态。然后打开该单元格运行按钮旁的下拉菜单。四个动作的边界不同:

动作执行范围适合场景
Run Cell当前单元格只验证这一段逻辑
Run Above当前单元格上方内容先补齐变量和导入
Run Below当前单元格及下方内容准备完成后继续跑结果段
Run All整个 Notebook内核刚重启,需要全量重放

如果目标单元格依赖上方的导入和数据准备,优先使用 Run Above,再单独运行目标单元格;如果准备段已经确认无误,才使用 Run Below 批量推进。顶部的双箭头也可以打开 Notebook 级菜单,选择 Run All、Run All Above 或 Run All Below。

VS Code Notebook 选中代码单元格并显示 Run Above、Run Below、Run All 的原创运行范围说明图
图1:Notebook 运行范围说明图,展示选中单元格后如何控制上方、下方或全部单元格。

检查点:新执行的单元格出现运行状态,输出紧跟在对应单元格下方;如果只想确认一个局部结果,不要直接点 Run All 覆盖现有状态。

步骤三:调整单元格位置并按章节运行

运行范围只能决定“这次跑哪些”,不能替你修复依赖关系。如果数据准备单元格排在分析单元格后面,应在命令模式下抓住单元格左侧的拖动区域,把它移动到依赖它的单元格之前。也可以选中一个或多个单元格,使用 Alt+Arrow 上移或下移。

为了让顺序更容易维护,可以在准备、清洗、分析等区域上方放 Markdown 标题。打开左侧活动栏的文件资源管理器,再切到侧栏的 Outline,找到对应标题后使用章节操作运行这一组单元格。章节运行适合局部重放,但它仍然依赖当前内核中的变量状态,不能替代一次干净的全量执行。

VS Code Notebook 中 Markdown 章节、Cell 1、Cell 2 与 Outline 的原创顺序和章节运行说明图
图2:单元格顺序与章节运行说明图,展示物理排列和 Outline 结构保持一致。

检查点:Notebook 中的单元格上下关系与 Outline 章节结构一致,运行章节后只更新目标区域。若移动后出现变量未定义,说明仍有更早的准备单元格没有执行。

步骤四:清理旧状态后重新验证

Notebook 的内核是持续存在的:即使把某个单元格移走,之前执行过的变量仍可能留在内存里。因此“单元格顺序看起来正确”不等于结果真的由这套顺序产生。

  1. 在 Notebook 主工具栏选择清理单元格输出,先移除容易误导的旧结果。
  2. 需要彻底验证时,选择重启内核;遇到卡住的执行再选择中断。
  3. 从导入、参数和数据准备单元格开始,按上到下顺序重新执行。
  4. 最后运行分析或导出段,确认输出只来自本次重放。

一个实用的验收方式是记录每个章节的前置条件:准备章节产出数据对象,清洗章节改变字段,分析章节只消费前两者。这样即使改了一个单元格,也能知道应该从哪个章节重新运行,而不用每次盲目全量执行。

常见问题

为什么我把单元格拖到前面,结果还是没有变化?

因为内核可能已经保存了旧变量和旧输出。重启内核并从新的第一步开始运行,才能验证新的物理顺序是否真正成立。

Run Above 和 Run All Above 是同一个动作吗?

不同版本或扩展组合里的菜单名称可能略有差异。判断原则是看范围:它是否包含当前选中的单元格,以及是否只运行它上方的内容。需要时以菜单旁的范围提示为准。

按章节运行时为什么仍然提示变量不存在?

章节运行只覆盖当前标题下的内容,不会自动补跑其他章节。先运行负责导入和数据准备的章节,再运行依赖它的章节。

把 Notebook 运行顺序整理成“内核正确、单元格有序、范围明确、状态干净”四个检查点,基本就能定位大多数执行错乱。日常修改用局部运行,准备发布或交接前再重启内核并按顺序完整重放一次。

声明:本文转载于:17golang原创 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>