rpy2:加载在conda环境中安装的R版本,而不是系统中的版本

问题描述

我正在使用rpy2从Python脚本中运行一些R代码。该脚本是在conda环境中运行的,该环境包含已安装的R版本3.6.1。

问题是,当我运行脚本rpy2时,会加载安装在系统(即不在环境中)中的R,它是一个较旧的版本3.4。 4。我这样检查加载的版本:

from rpy2.robjects import r
r("""cat(paste("R version: ",R.version.string))""")

如何强制rpy2使用安装在conda环境中的R版本?


添加

我删除了系统的R版本,现在尝试运行上述行会导致:

ValueError: r_home is None. Try python -m rpy2.situation

正在运行python -m rpy2.situation,显示以下内容:

rpy2 version:
3.3.5
Python version:
3.8.3 (default,Jul  2 2020,16:21:59) 
[GCC 7.3.0]
Looking for R's HOME:
    Environment variable R_HOME: None
    Calling `R RHOME`: /home/gabriel/miniconda3/envs/py3/lib/R
    Environment variable R_LIBS_USER: None
R's additions to LD_LIBRARY_PATH:

R version:
    In the PATH: R version 3.6.1 (2019-07-05) -- "Action of the Toes"
    Loading R library from rpy2: OK
Additional directories to load R packages from:
None
C extension compilation:
  include:
  ['/home/gabriel/miniconda3/envs/py3/lib/R/include']
  libraries:
  ['R','pcre','lzma','bz2','z','rt','dl','m','icuuc','icui18n']
  library_dirs:
  ['/home/gabriel/miniconda3/envs/py3/lib','/home/gabriel/miniconda3/envs/py3/lib','/home/gabriel/miniconda3/envs/py3/lib/R/lib']
  extra_compile_args:
  []
  extra_link_args:
  ['-Wl,--export-dynamic','-fopenmp','-Wl,-O2',--sort-common',--as-needed',-z,relro',now',--disable-new-dtags',--gc-sections',-rpath,/home/gabriel/miniconda3/envs/py3/lib',-rpath-link,/home/gabriel/miniconda3/envs/py3/lib']

似乎表明rpy2知道R中安装的conda

解决方法

如果我没记错的话,在安装rpy2的过程中会链接到要使用的R安装。

要使用您提到的特定R安装,我想您可以执行以下步骤:

  • 卸载rpy2
  • 在PATH环境变量中添加目标R安装的bin文件夹:
    export PATH=${PATH}:/path/to/conda/R-3.6.1/bin/
  • 将R_HOME变量环境设置为目标R安装的文件夹: export R_HOME=/path/to/conda/R-3.6.1/
  • 再次安装rpy2。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...