conda环境使用rpy2时如何指定加载conda安装的R而非系统R
太长不看版
我能否配置rpy2,使其加载conda安装的R而非系统安装的R?
问题描述
我运行rpy2时调用的是系统安装的R,但却会从我的conda R安装路径中检索和加载库,这会引发包括段错误(segfault)在内的诸多副作用。
问题复现
我使用的Ubuntu 18服务器上由管理员预装了R,我想搭配使用conda、Python和rpy2,以便灵活选择各工具的版本。
我处于名为(rnvp)的conda环境中,rpy2识别到了conda安装的4.0.5版本R,但rpy2.robjects库却加载了版本为4.0.3的系统R。
运行rpy2内置的环境检查脚本得到如下输出:
(rnvp) ludhu126@hyperion:~/real-nvp/real-nvp$ python Python 3.9.6 (default, Aug 18 2021, 19:38:01) [GCC 7.5.0] :: Anaconda, Inc. on linux Type "help", "copyright", "credits" or "license" for more information. >>> import rpy2.robjects as ro During startup - Warning messages: 1: package ‘methods’ was built under R version 4.0.5 2: package ‘datasets’ was built under R version 4.0.5 3: package ‘utils’ was built under R version 4.0.5 4: package ‘grDevices’ was built under R version 4.0.5 5: package ‘graphics’ was built under R version 4.0.5 6: package ‘stats’ was built under R version 4.0.5 >>> print(ro.r) <rpy2.robjects.R object at 0x7f8f16ece8b0> platform: x86_64-pc-linux-gnu arch: x86_64 os: linux-gnu system: x86_64, linux-gnu status: major: 4 minor: 0.3 year: 2020 month: 10 day: 10 svn rev: 79318 language: R version.string: R version 4.0.3 (2020-10-10) nickname: Bunny-Wunnies Freak Out >>> import rpy2.situation >>> for row in rpy2.situation.iter_info(): ... print(row) ... rpy2 version: 3.4.5 Python version: 3.9.6 (default, Aug 18 2021, 19:38:01) [GCC 7.5.0] Looking for R's HOME: Environment variable R_HOME: /home/ludhu126/miniconda3/envs/rnvp/lib/R Calling `R RHOME`: /home/ludhu126/miniconda3/envs/rnvp/lib/R Environment variable R_LIBS_USER: None R's additions to LD_LIBRARY_PATH: R version: In the PATH: R version 4.0.5 (2021-03-31) -- "Shake and Throw" Loading R library from rpy2: OK Additional directories to load R packages from: None C extension compilation: include: ['/home/ludhu126/miniconda3/envs/rnvp/lib/R/include'] libraries: ['R', 'pcre2-8', 'lzma', 'bz2', 'z', 'rt', 'dl', 'm', 'iconv', 'icuuc', 'icui18n'] library_dirs: ['/home/ludhu126/miniconda3/envs/rnvp/lib', '/home/ludhu126/miniconda3/envs/rnvp/lib/R/lib', '/home/ludhu126/miniconda3/envs/rnvp/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/ludhu126/miniconda3/envs/rnvp/lib', '-Wl,-rpath-link,/home/ludhu126/miniconda3/envs/rnvp/lib']
终端指向的conda R安装版本确实为4.0.5:
(rnvp) ludhu126@hyperion:~/real-nvp/real-nvp$ which R /home/ludhu126/miniconda3/envs/rnvp/bin/R (rnvp) ludhu126@hyperion:~/real-nvp/real-nvp$ R --version R version 4.0.5 (2021-03-31) -- "Shake and Throw" Copyright (C) 2021 The R Foundation for Statistical Computing Platform: x86_64-conda-linux-gnu (64-bit) R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under the terms of the GNU General Public License versions 2 or 3. For more information about these matters see https://www.gnu.org/licenses/.
退出rnvp环境后,默认调用的是位于/usr/lib/R的4.0.3版本系统R:
(rnvp) ludhu126@hyperion:~/real-nvp/real-nvp$ conda activate base (base) ludhu126@hyperion:~/real-nvp/real-nvp$ which R /usr/bin/R (base) ludhu126@hyperion:~/real-nvp/real-nvp$ R --version R version 4.0.3 (2020-10-10) -- "Bunny-Wunnies Freak Out" Copyright (C) 2020 The R Foundation for Statistical Computing Platform: x86_64-pc-linux-gnu (64-bit) R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under the terms of the GNU General Public License versions 2 or 3. For more information about these matters see https://www.gnu.org/licenses/.
核心问题
我能否配置rpy2使其加载conda安装的R?
相近问题参考
- 有提问诉求为使用本地安装的R而非conda安装的R,且针对Python 2.7版本,与本问题诉求相反
- 有提问提及rpy2安装失败、lapack动态库绑定失败、R_HOME变量未配置等问题,本问题不存在上述情况
- 有提问提到PATH变量用于解析R安装路径,但本问题中
which R输出显示PATH配置无问题 - 有提问涉及错误加载R库的问题,本问题中R库可正常从conda路径加载,不存在该问题
- 有提问给出的解决方案为卸载系统R安装包,本问题提问者无服务器管理员权限无法执行该操作
内容的提问来源于stack exchange,提问作者LudvigH
相关产品推荐
相关产品推荐

