Rcpp在Jupyter Notebook运行失败,R控制台安装正常却报错求助
我之前也踩过这种环境不一致的坑——明明在R控制台里Rcpp装得好好的,一到Jupyter Notebook就掉链子,大概率是两个环境的R配置、编译工具链不统一导致的。咱们一步步来捋清楚:
1. 先确认Jupyter和控制台用的是不是同一个R环境
先在Jupyter Notebook里跑这两行代码:
Sys.getenv("R_HOME") .libPaths()
然后切到你的R控制台,也跑同样的命令。对比输出的路径,如果不一样,说明Jupyter用的是Anaconda自带的R环境,而你控制台用的是系统R或者其他独立安装的R版本。
解决办法:在你能正常运行Rcpp的那个R控制台里,执行下面的命令,把这个R环境注册成Jupyter的内核:
IRkernel::installspec(user = TRUE)
之后重启Jupyter,选择新添加的这个R内核再测试。
2. 检查编译工具链是否一致
报错里显示用的是Anaconda的C++编译器(/home/tyatabe/anaconda3/bin/x86_64-conda_cos6-linux-gnu-c++),可能和你控制台用的编译器不是同一个。
在Jupyter和控制台分别运行:
Sys.which("g++")
如果路径不一样,你可以在Jupyter里手动指定控制台用的编译器路径:
Sys.setenv(CXX = "/usr/bin/g++") # 替换成你控制台输出的g++路径
然后重新加载Rcpp:
library(Rcpp)
3. 直接在Jupyter的R环境里重新安装Rcpp
有时候控制台装的包和Jupyter的R环境是完全隔离的,哪怕名字一样也不通用。你可以在Jupyter里直接重新安装Rcpp:
install.packages("Rcpp", type = "source")
安装时留意输出,如果有依赖缺失(比如报错里提到的SimInf相关路径问题),先把对应的依赖包也在Jupyter环境里装一遍。
4. 用Conda管理Rcpp(如果想用Anaconda的R环境)
如果你本来就打算用Anaconda自带的R环境,那直接用conda安装Rcpp会更适配:
先打开终端,激活你的Anaconda环境,然后执行:
conda install -c conda-forge r-rcpp
安装完成后重启Jupyter Notebook,再测试Rcpp的运行。
按照上面的步骤排查,应该能解决环境不匹配导致的Rcpp运行失败问题。
内容的提问来源于stack exchange,提问作者Tada

