首页 > 解决方案 > rpy2:加载安装在conda环境中的R版本,而不是系统中的那个

问题描述

我正在使用rpy2R从 Python 脚本中运行一些代码。该脚本在安装了 3.6.1 版的conda环境中运行。R

问题是,当我运行脚本时,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知道R安装在conda.

标签: pythonrcondarpy2

解决方案


如果我没记错的话,要使用的 R 安装链接是在安装 rpy2 期间创建的。

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

  • 卸载 rpy2
  • bin在 PATH 环境变量中添加目标 R 安装的文件夹:
    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。

推荐阅读