python - 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
.
解决方案
如果我没记错的话,要使用的 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。
推荐阅读
- r - 如何同时删除破折号 (-) 和 \n 或对此文本清理的一些解决方案
- java - 由于 Java 即时编译,我是否应该期望 Mockito 测试中的方法中没有的代码运行得更快?
- c# - 修改复杂属性时设置实体状态
- java - 将多个通量合二为一
- python - 姜戈。模型未显示在模板中
- c# - 为什么第二个 from 子句没有在以下 LINQ 查询中执行?
- struct - 将原始二进制结构写入D文件?
- c# - 如何使用反射或类似方法动态提取方法的代码?
- django - Django - 是否有类似于 when2meet.com 的每周日历小部件?
- html - 如何设置单选按钮的样式,使其看起来像普通的“了解更多”按钮