问题描述
我正在使用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。