rpy2:加载conda环境下安装的R版本,不是系统中的那个

rpy2: load R version installed in conda environment, not the one in the system

我在 Python 脚本中使用 rpy2 到 运行 一些 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', '-Wl,--sort-common', '-Wl,--as-needed', '-Wl,-z,relro', '-Wl,-z,now', '-Wl,--disable-new-dtags', '-Wl,--gc-sections', '-Wl,-rpath,/home/gabriel/miniconda3/envs/py3/lib', '-Wl,-rpath-link,/home/gabriel/miniconda3/envs/py3/lib', '-Wl,-rpath-link,/home/gabriel/miniconda3/envs/py3/lib']

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

如果我没记错的话,link要使用的R安装是在安装rpy2的时候做的

要使用您提到的特定 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。