hydrogen 安装失败主因是 atom/apm 环境未就绪或内核未正确注册;需先验证 apm 可用性、正确执行 apm install hydrogen、配置有效包源,并安装注册 ipykernel,再确保内核名称匹配、backend 设置正确(如 %matplotlib inline)及避免插件冲突。

Hydrogen 安装失败:apm 报错或搜索不到插件
Hydrogen 无法安装,大概率不是插件本身的问题,而是 Atom 或 apm 环境没就绪。Atom 自 2025 年底已停止官方维护,但现有安装仍可使用——前提是 apm 命令能正常调用。
- 先验证
apm是否可用:终端运行apm --version;若报“command not found”,说明 Atom 未正确注册 CLI 工具(macOS 需在 Atom 菜单中选 Atom → Install Shell Commands;Windows 用户需重装 Atom 并勾选“Add to PATH”) - 避免用
apm install hydrogen bash—— 这个命令里多写了bash,是常见笔误,正确命令只有apm install hydrogen - 如果搜索安装时界面显示 “No packages found”,尝试切换 Atom 设置里的包源:进入
Settings → Packages → Package Manager Settings → Package Repository,改为https://atom.io/api/packages(国内用户可临时配代理或换源)
装完 Hydrogen 却连不上 Python 内核:jupyter kernelspec list 返回空
Hydrogen 不自带内核,它只是个“客户端”。没有可用内核,就等于有手机没 SIM 卡——界面亮着,但发不出消息。
- 必须单独安装并注册内核。Python 最常用的是
ipykernel:pip install ipykernel,然后执行python -m ipykernel install --user --name python3 --display-name "Python 3" - 运行
jupyter kernelspec list,确认输出里包含类似python3 /home/xxx/.local/share/jupyter/kernels/python3的条目;如果没看到,说明注册失败,重跑上一步命令(注意不要加--user后再用 root 权限跑) - Hydrogen 默认只识别
python3名字的 kernel;如果你用 conda 环境,注册时得指定环境路径:conda activate myenv && python -m ipykernel install --user --name myenv --display-name "myenv",之后在 Hydrogen 右下角手动选这个 kernel
Shift+Enter 没反应 / 输出区空白:内核看似连接成功但不执行
这通常不是代码问题,而是 Hydrogen 没真正“活”起来——它可能卡在初始化阶段,或被其他扩展干扰。
- 检查 Atom 底部状态栏右下角:是否显示
Python 3(或你选的 kernel 名)和绿色圆点?如果没有,点它手动 Connect;如果显示黄色/红色,说明内核启动失败,看 Developer Tools(Ctrl+Shift+I)Console 里有没有Kernel died或ZMQError - 禁用冲突插件:特别是
atom-julia-client、ink或旧版language-jupyter,它们会抢占内核通信端口 - 别在未保存的文件里运行代码(如
untitled标签页),Hydrogen 有时会拒绝执行;先Ctrl+S保存为.py文件再试
图表不显示(matplotlib/plotly)、watch 表达式不更新
Hydrogen 对富媒体的支持依赖内核返回的 MIME 类型和前端渲染逻辑,不是所有 backend 都兼容。
- matplotlib 默认用
agg后端(无图形界面),导致plt.show()无声无息。必须显式切到 inline:%matplotlib inline(在代码块第一行运行一次即可) - plotly 图表需要
plotly-orca或kaleido渲染器才能静态导出,但 Hydrogen 只支持交互式显示;确保已装plotly且版本 ≥5.0,并在代码开头加import plotly.io as pio; pio.renderers.default = 'notebook' - watch 功能依赖变量作用域跟踪,只对顶层变量有效;
def f(): x = 1; return x中的x不会被监视,watch 只认global或模块级变量











