Conda安装R内核的Notebook
前言
由于博主多次在Linux远程服务器上使用conda配置r内核的jupyter notebook,但每次时间一久就会忘记某些步骤(最主要是一样的坑每次都会踩出不一样的问题)。
在综合网上相关教程以及自己的亲身经验后,总结出一份关于 Conda、R、Jupyter Notebook 的“安装指北”,供大家以及将来的我参考。
指北
安装Conda
首先介绍一下Conda、Anaconda以及两者之间的一些联系:
Conda是个包管理器,可以支持二进制包,所以不需要安装时从源码编译了,而且也可以装原生库。但是,一些 pip 里的 Python 库在 conda 里找不到。
- Anaconda是用Conda管理的Python科学计算发行版。
- Conda Forge是另一个Python发行版,要比Anaconda的包更丰富。但这里有个坑就是Conda Forge和Anaconda并不完全兼容,如果你有一个项目同时用到Anaconda和Conda Forge里的包,有可能会挂。
通常我使用的服务器都是事先安装好了Anaconda的,
下面推荐一下Anaconda官方出品的 Linux系统安装Anaconda 的文档,有很详细的步骤说明以及命令解释。
2022.10.17 更新Linux-Centos7下安装Anaconda流程:
由于国内的特殊环境,还是推荐直接在清华大学镜像源等国内源下载Anaconda安装脚本,通常选择x86_64版本:
Chrome可以右键选择复制文件链接地址,然后在centos使用wget下载:
1 | # 下载脚本 |
下面是我自己遇到的一些选项,记录一下。请按照自己的情况,按照脚本提示输入:
1 | # 按照提示输入ENTER(回车) |
Anaconda就安装完成了,顺便推荐添加国内源:
1 | # 添加中科大源 |
创建环境
本人是直接创建一个新的conda环境来避免依赖冲突,最省事。
1 | # 查看已有的conda环境 |
安装R
这里需要注意不能直接使用 conda install r
来安装R。
直接输入上面的命令的话,安装的将是3.6版本(好像是)的R,此版本太老了,许多R的包都不能使用。截止2022.10.10,R的conda最新版本是4.2.1。
下面将讲解如何安装最新版本的R(4.2.1)。
1 | # conda通过conda-forge安装r-base |
conda-forge在文章开头也介绍了,我感觉可以理解成Linux里面的一个发行版???
在确认安装之前(也就是输入y之前),可以事先确定一下r-base的版本是不是4版本以上(目前是4.2.1)。
2023.7.18 更新:
如果使用上述命令指定通过conda-forge安装r-base,但最终安装版本仍然不是最新版本(截止本文修改时最新版本是4.3.1),而是3.x.x老版本,可以尝试指定r-base版本号进行安装。
1
2
3
4
5 # 首先通过搜索r-base包版本找到最新
conda search -c conda-forge r-base
# 划到最下面可以看到最新的版本号
# 然后指定版本号安装(这里以4.3.1为例)
conda install -c conda-forge r-base=4.3.1
安装R内核和Jupyter
1 | # 指定使用默认源安装 |
注意:
这里不要使用conda-forge安装r-irkernel和jupyter。
前面也提到,Conda Forge和Anaconda并不完全兼容。亲自尝试过使用
conda install -c conda-forge r-irkernel jupyter
命令安装,jupyter notebook无法正常启动。这时只需要卸载再重新安装即可:
1
2
3
4 # 卸载
conda uninstall r-irkernel jupyter
# 安装
conda install -c defaults r-irkernel jupyter
启动Notebook
如果前面一切顺利的话,这里就能够正常启动Jupyter Notebook了,也可以创建R的notebook了;
如果还不能正常启动,请继续往下阅读【异常处理】。
1 | # 启动Jupyter Notebook |
异常处理
模块缺失
如果在启动notebook时提示 ModuleNotFoundError: No module named ‘zmq.backend.cffi._cffi’ ,如下图类似的情况:
解决方法可以参照官方仓库下的一个issue,使用pip卸载相关模块再重新安装:
1 | # 使用pip而不是conda管理pyzmq包 |
亲测有效。
出现类似的 ModuleNotFoundError(模块找不到)问题都可以尝试用以上方法,使用pip替代conda管理那些python包,先卸载再重新安装。
主要是要找到那个准确的包名,可以尝试在pypi搜索关键字。
端口占有
由于是实验室多人共用的服务器,notebook默认的8888端口也被占用了。下面是解决方法:
2023.10.31 更新
最近notebook升级到了7版本,下面的修改方法会被逐渐弃用:
截止更新日期,修改password的原代码已经不能使用,请 notebook 7 版本使用如下方法修改密码:
1
2
3
4
5
6
7 $ ipython
Python 3.11.5 (main, Sep 11 2023, 13:54:46) [GCC 11.2.0]
Type 'copyright', 'credits' or 'license' for more information
IPython 8.15.0 -- An enhanced Interactive Python. Type '?' for help.
# 这里导入有改动
In [1]: from jupyter_server.auth import passwd
In [2]: passwd()或者直接命令行输入
jupyter server password
进行设置:
1 | ipython |
美化增强
这部分内容不是必要的,仅做记录。
1 | # 配置主题 |
感谢
所有热心分享教程经验的网友
更新1
我在2023.03.20重复此教程时发现 Nbextensions 标签不会出现,经查阅,是插件未更新适配依赖包 nbclassic 的新版本导致。
详见GitHub的issue。
解决方法:降级依赖包版本即可。后续官方可能会更新适配。
1 | pip install "nbclassic<0.5" |
作者:Yuesir
本文链接:https://vccv.cc/article/conda-r-jupyter.html
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-ND 4.0 许可协议,转载请注明出处!