必须确保r和jupyter在同一环境,否则irkernel::installspec()会静默失败;推荐conda用户执行conda install -c conda-forge r-irkernel后用python -m r_kernel install注册内核。

直接装 IRkernel 就行,但必须确保 R 和 Jupyter 在同一环境里,否则 IRkernel::installspec() 会静默失败——它不报错,但你在 Jupyter 里就是看不到 R 内核。
确认 R 和 Jupyter 是否在同一个 Python 环境下
这是最常被跳过的一步,也是 80% “装完没反应” 问题的根源。Anaconda 用户尤其容易踩坑:你用 conda install r-essentials 装的 R,和用系统自带 R 安装的 IRkernel,根本不是一回事。
- 打开终端(macOS/Linux)或 Anaconda Prompt(Windows),运行:
jupyter --paths,记下data目录路径 - 再运行:
R -e ".libPaths()",看输出的 library 路径是否和上面的jupyter data路径能对上(尤其是kernels子目录是否存在) - 如果 R 是通过
conda install -c r r-essentials装的,就别再用系统 R 或 RStudio 启动install.packages()—— 那只会把 kernel 装到错的地方
用 conda 一键装 R 内核(推荐给 Anaconda 用户)
省去路径判断,兼容性好,还能统一管理 R 包。适用于绝大多数桌面场景。
- 在 Anaconda Prompt 或终端中执行:
conda install -c conda-forge r-irkernel - 然后运行:
python -m r_kernel install(注意不是R命令,而是用 Python 模块方式注册) - 验证:启动
jupyter notebook,新建 notebook 时右上角New下拉菜单里出现R即可 - 如果想让内核对所有用户生效(比如多账户共享一台机器),加参数:
python -m r_kernel install --user=False
手动安装 IRkernel(适合非 conda 用户或自定义 R 环境)
必须在你真正要用的那个 R 实例里执行,不能随便点开一个 R GUI 就粘代码。
- 先确认你用的是哪个 R:终端输入
which R(macOS/Linux)或where R(Windows),结果应指向 conda 环境或你手动安装的 R 目录 - 启动该 R:
R,然后一次性运行:
install.packages(c('repr', 'IRdisplay', 'evaluate', 'crayon', 'pbdZMQ', 'uuid', 'digest'), repos='https://cran.rstudio.com/')
devtools::install_github('IRkernel/IRkernel')
IRkernel::installspec(name = 'ir44', displayname = 'R 4.4')
其中 name 是内核标识名(避免和旧版本冲突),displayname 是 Jupyter 里显示的名字。如果提示找不到 devtools,先运行 install.packages('devtools')。
常见错误现象和对应解法
IRkernel::installspec() 运行完,Jupyter 里还是没有 R?大概率是 kernel 注册路径错了。
-
Error in IRkernel::installspec() : jupyter-client has to be installed→ 说明当前 R 找不到 jupyter,不是 pip/conda 安装的 jupyter,就是 PATH 没设对;用which jupyter查位置,再用IRkernel::installspec(jupyter = '/path/to/jupyter')显式指定 - Jupyter 启动后报
Kernel died, restarting→ 多半是 R 包缺失,重点检查repr、IRdisplay、pbdZMQ是否都装全了,且版本匹配(R 4.3+ 推荐用 IRkernel >= 1.5) - 内核列表里有 R,但新建 notebook 选它后卡住不动 → 可能 zmq 库没装,Linux/macOS 需提前装:
sudo apt install libzmq3-dev(Ubuntu)或brew install zeromq(macOS)
路径和环境隔离是核心,不是“跑通三行命令”就完事。R 内核本质是个桥接程序,它得同时认得 R 的 runtime 和 Jupyter 的通信协议,中间任何一环断开,它就只是个看不见的文件夹。











