Macos|在Jupyter notebook里添加R kernel
以前是windows系统,因为Jupyter notebook的交互和展示更友好,所以直接用Jupyter跑python和R。换macOS之后配置R kernel一直有点问题,记录下踩坑和最终解决方案。
主要参考教程:
jupyter notebook配置IRkernel
jupyter中配置R
预先准备
- 下载anaconda、R(不一定需要Rstudio)
直接官网下载系统对应的版本就可以 anaconda R
检验:mac自带的terminal里输入以下命令,可以返回当前Jupyter版本号
在terminal里输入R 可以进入Rjupyter kernelspec --version
核心步骤
根据教程,在Jupyter里配置R kernel是这两步
# 第一步:安装IRkernel
install.packages('IRkernel')
# 第二步:在jupyter notebook中安装,以下两个按需执行其中一个即可
# 只在当前用户下安装
IRkernel::installspec()
# 或者是在系统下安装
IRkernel::installspec(user = FALSE)
如果在R的终端里可以直接跑通以上命令的话,你很幸运,就不需要看之后的参考了,打开Jupyter应该就能有R kernel
踩坑记录
在实际操作时会不知道这些命令是在终端输入还是在R命令行界面输入,并且一直有各种报错,以下时我踩的坑和解决方案。
坑1:不需要下载anaconda的R
有一些教程包括anaconda的官方教程都会让你在anaconda的prompt终端里用conda install 来下载r及其依赖包,但是我操作时遇到两个问题,一个是用anaconda下载的R和官网下载的路径不同、版本也不同,下载依赖包时有各种报错:
installation of package ‘digest’ had non-zero exit status
(注意,核心步骤里的命令都是在R里执行的,所以需要从终端里先用R命令进入R再执行,不过其实最后发现用不到anaconda下载的这个R)
坑2:在R console里执行IRkernel::installspec()时报错
既然终端无法install IRkernel,我就在R的console里也试了试(不是R studio)。执行install.packages(‘IRkernel’)时没报错,但是下一步出现了如下错误:jupyter-client has to be installed but “jupyter kernelspec --version” exited with code 127.
我明明是下载且能打开Jupyter的,并且我在终端里可以成功执行“jupyter kernelspec --version”
所以我怀疑可能是环境变量之类的问题,导致我的R无法成功连接到Jupyter。
验证
我分别在终端(terminal)的R和R console中执行了R.home(),发现俩R的路径果然不一样
终端的路径
R console的路径
解决方案
- 在终端里用sudo进入R console所在的那个文件夹
sudo /Library/Frameworks/R.framework/Resources/bin/R
(mac的默认路径应该就是这个,参考上面R.home()的路径,如果不一样的话就对应修改)
输入用户密码后就可以进入R了
- 此时再执行上述核心步骤的命令,就可以成功下载包并安装了