如何让VSCode Jupyter Notebook单元格在已配置的Python终端运行
问题说明
该问题是VSCode Python/Jupyter扩展的默认设计逻辑导致:默认触发.ipynb单元格运行时,扩展会自动拉起独立的Jupyter内核进程,不会自动复用用户提前手动打开、已完成SLURM节点登录与虚拟环境激活的Python终端。大量使用HPC集群通过SLURM调度资源的用户都遇到过同类问题,以下是可直接落地的解决方案,体验和R环境下发送代码到活动终端一致。
可行方案
方案1:直接绑定快捷键发送选中内容到活动终端(和R体验完全一致)
不用依赖Jupyter扩展的内核调度逻辑,操作步骤如下:
- 提前打开终端,完成SLURM计算节点登录、虚拟环境激活,进入Python交互环境,点击终端区域确保它是当前活动终端
- 打开VSCode键盘快捷键设置(快捷键
Ctrl+K Ctrl+S),搜索Terminal: Send Selected Text to Active Terminal,将该操作的快捷键绑定为Ctrl+Enter(如果和现有Jupyter运行快捷键冲突,可移除原有Jupyter运行的同快捷键绑定) - 后续运行代码时,点击单元格左侧行号区域一键选中整个单元格内容,按下
Ctrl+Enter,代码就会直接发送到你已经配置好的SLURM终端中执行,不会启动任何新终端。
优化提示:如果发送多行代码时出现缩进错乱,在设置中开启Terminal: Send Text Using Bracketed Paste Mode即可解决。
方案2:将现有SLURM环境注册为自定义Jupyter内核(保留原生Jupyter体验)
如果希望保留Jupyter单元格的输出折叠、变量浏览器、单元格运行计数等原生体验,可以把你在SLURM节点上配置好的Python环境注册为可被VSCode识别的Jupyter内核:
- 在已经登录SLURM节点、激活目标虚拟环境的终端中,执行命令安装依赖:
pip install ipykernel - 执行内核注册命令:
python -m ipykernel install --user --name slurm-compute --display-name "Python (SLURM Compute Node)" - 回到.ipynb文件,点击右上角的内核选择按钮,选中刚注册的
Python (SLURM Compute Node)内核,后续触发单元格运行时,扩展会直接连接该已配置好的环境,不会拉起无配置的全新Python进程。
方案3:关闭Jupyter扩展自动启动内核的默认行为
打开VSCode设置,搜索Jupyter: Disable Jupyter Auto Start并勾选,后续第一次运行单元格时,扩展不会自动拉起新的Python内核进程,会弹出选择框让你手动指定已经在SLURM节点上运行的内核实例,直接选中目标实例即可复用现有环境。
注意事项
如果注册内核后仍然连接到本地默认Python环境,先确认你的VSCode远程会话已经通过SLURM调度到目标计算节点,或者已经完成计算节点内核端口的SSH转发,避免因网络不通导致扩展回退到本地环境。
内容的提问来源于stack exchange,提问作者Arinze
相关产品推荐
相关产品推荐

