Sublime Text 无法真正运行 .ipynb 文件,其 Jupyter 插件仅通过 jupyter console --existing 连接已存在内核,依赖 jupyter 命令可用、kernel_name 正确且 ipykernel 已安装;推荐用 SendCode + SublimeREPL 替代,更稳定且支持变量持久化。

Sublime Text 不能运行 .ipynb 文件,也不支持单元格执行、内核状态保持或富输出(图表、LaTeX、HTML 渲染)。所谓“运行 Jupyter Notebook 代码”,实际只是把选中的 Python 代码块发给一个已启动的 IPython/Jupyter 内核执行——它不等于 notebook,只是个轻量前端。
Sublime 的 Jupyter 插件到底连的是什么?
插件(如 Jupyter by pql9)默认调用 jupyter console --existing 连接本地内核,不是启动 notebook 服务,也不是打开浏览器。它依赖两个前提:jupyter 命令可用 + 指定的 kernel_name 真实存在且已注册。
- 终端里运行
jupyter kernelspec list,输出里那一串名字(如python3、myenv、conda-env-data-science-py)才是kernel_name的合法值,不是 Python 版本号 -
jupyter_command必须指向可执行文件,不是python -m jupyter;Mac 用户从桌面图标启动 Sublime 时,~/.zshrc里的 PATH 通常不生效,得写绝对路径(如/opt/miniconda3/bin/jupyter) - 插件不会自动启动内核:如果没人在终端跑过
jupyter console或jupyter notebook,第一次按Ctrl+Alt+B就会卡在 “Connecting…” 或报No kernelspec found
为什么按 Ctrl+Alt+B 没反应?三个最常漏掉的检查点
不是插件没装,而是连接链断在了底层。
- 终端执行
jupyter console --existing,看是否能进交互界面;如果报ModuleNotFoundError: No module named 'ipykernel',说明目标环境缺ipykernel—— 在对应 conda/virtualenv 里运行python -m ipykernel install --user --name myenv --display-name "My Env" - Sublime 的 User Settings 里
kernel_name和jupyter kernelspec list输出不一致,就会静默 fallback 到系统默认 kernel(比如python3),导致 import 包失败 - Windows 用户注意:
jupyter_command值不能带.exe后缀(填jupyter即可),否则插件找不到命令
比原生 Jupyter 插件更稳的方案:SendCode + SublimeREPL
它不依赖 kernel discovery,直接 spawn 一个干净的 ipython 进程,能捕获 input()、显示完整 traceback,且对环境路径更宽容。
- 先确认终端能直接运行
ipython(不是python),并记下which ipython输出路径 - 在
Preferences → Package Settings → SendCode → Settings中设:{ "prog": "ipython", "syntax_mapping": {"python": "python"} } - 快捷键生效前,必须先手动打开一个 IPython REPL 窗口:
Ctrl+Shift+P→ 输入SublimeREPL: Python→ 选Python - IPython - 之后在
.py文件中选中代码,按Ctrl+Enter(Win/Linux)或Cmd+Enter(macOS)即可发送;首次运行会自动启动 REPL,后续复用同一进程,变量持续有效
matplotlib 出不了图?别怪 Sublime,是 inline 模式没开
SublimeREPL 或 Jupyter 插件都不自动启用 matplotlib 的 inline 后端,plt.show() 会弹窗(可能被隐藏),plt.plot(...) 则无输出。
- 在已打开的 SublimeREPL IPython 窗口中,手动输入
%matplotlib inline回车(只需一次,会话内持久) - 如果仍无效,检查是否安装了
matplotlib且和当前 IPython 环境匹配(比如 conda 环境里装了,但 Sublime 调用的是系统 Python 的 ipython) - 想用交互式后端(如 Qt5Agg),得额外配
%matplotlib qt5,但弹窗可能被 Sublime 主窗口遮挡,调试时建议切到终端验证
真正难的从来不是配置步骤,而是接受 Sublime 的边界:它不解析 .ipynb JSON 结构,不维护 kernel heartbeat,也不渲染任何富内容。你编辑的始终是纯文本,执行的始终是外部进程的一次 stdin/stdout 通信。一旦需要变量检查、断点、LaTeX 公式或小部件,就得切走——这不是缺陷,是定位使然。

















