You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jupyter中rpy2运行异常,寻求Conda兼容解决方案

问题:Conda环境中rpy2调用失败,R版本不匹配导致错误

我的想法

不确定这是Conda问题还是rpy2问题。

环境背景

  • 操作系统:MS Windows 11 Pro
  • Anaconda版本:22.9.0
  • Python版本:3.7.16
  • R-base版本:3.6.1(Conda环境内安装)
  • 已安装的辅助包:
    • numpy 1.23.5
    • scipy 1.10.0
    • opencv 4.6.0
    • matplotlib 3.6.2
  • rpy2版本:2.9.4(Conda安装)

复现步骤与错误信息

执行环境检测代码

import rpy2
import rpy2.situation
for row in rpy2.situation.iter_info():
    print(row)

输出结果与错误

输出显示rpy2实际检测到的版本为3.5.11,Python版本为3.9.16(与Conda环境的3.7.16不符),且R版本调用了系统安装的R-4.2.2和R-4.1.3,而非Conda环境内的R-3.6.1:

rpy2 version:
3.5.11
Python version:
3.9.16 (main, Jan 11 2023, 16:16:36) [MSC v.1916 64 bit (AMD64)]
Looking for R's HOME:
    Environment variable R_HOME: None
    InstallPath in the registry: C:\Program Files\R\R-4.2.2
    Environment variable R_USER: None
    Environment variable R_LIBS_USER: None
R version:
    In the PATH: R version 4.1.3 (2022-03-10) -- "One Push-Up"
Copyright (C) 2022 The R Foundation for Statistical Computing
Platform: x86_64-w64-mingw32/x64 (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/.
    Loading R library from rpy2: OK
Additional directories to load R packages from:
None
C extension compilation:
    Warning: Unable to get R compilation flags.
Directory for the R shared library:

随后抛出错误:

---------------------------------------------------------------------------
CalledProcessError                        Traceback (most recent call last)
Cell In[14], line 5
      2 import rpy2
      4 import rpy2.situation
----> 5 for row in rpy2.situation.iter_info():
      6     print(row)

File c:\Users\username\.conda\envs\this_env_name\lib\subprocess.py:528, in run(input, capture_output, timeout, check, *popenargs, **kwargs)
    526     retcode = process.poll()
    527     if check and retcode:
--> 528         raise CalledProcessError(retcode, process.args,
    529                                  output=stdout, stderr=stderr)
    530 return CompletedProcess(process.args, retcode, stdout, stderr)

CalledProcessError: Command '('C:\\Program Files\\R\\R-4.2.2\\bin\\x64\\R', 'CMD', 'config', 'LIBnn')' returned non-zero exit status 1.

导入rpy2.robjects时的错误

执行代码:

import rpy2.robjects

抛出错误:

R[write to console]: Error in gettext(fmt, domain = domain, trim = trim) : 
  3 arguments passed to .Internal(gettext) which requires 2

---------------------------------------------------------------------------
RRuntimeError                             Traceback (most recent call last)
Cell In[16], line 4
      1 #
      2 import rpy2
----> 4 import rpy2.robjects


File c:\Users\username\.conda\envs\this_env_name\lib\site-packages\rpy2\rinterface.py:817, in SexpClosure.__call__(self, *args, **kwargs)
    810     res = rmemory.protect(
    811         openrlib.rlib.R_tryEval(
    812             call_r,
    813             call_context.__sexp__._cdata,
    814             error_occured)
    815     )
    816     if error_occured[0]:
--> 817         raise embedded.RRuntimeError(_rinterface._geterrmessage())
    818 return res

RRuntimeError: Error in gettext(fmt, domain = domain, trim = trim) : 
  3 arguments passed to .Internal(gettext) which requires 2

关键观察

系统未调用Conda环境内的R-3.6.x版本,反而调用了系统全局安装的R-4.2.2和R-4.1.3;同时rpy2版本和Python版本与Conda环境配置不符,说明环境存在冲突。

需求

在不破坏现有Conda环境的前提下,实现Jupyter中rpy2正常运行,完成Python调用R脚本、处理对象并返回结果的功能。


解决方案

1. 强制指定Conda环境内的R路径

在Jupyter notebook开头添加以下代码,设置R_HOME环境变量指向Conda环境内的R安装路径:

import os
# 替换为你的Conda环境路径
os.environ['R_HOME'] = r'C:\Users\username\.conda\envs\this_env_name\Lib\R'
os.environ['PATH'] = r'C:\Users\username\.conda\envs\this_env_name\Lib\R\bin\x64;' + os.environ['PATH']

2. 重新安装匹配版本的rpy2

Conda环境内的R-3.6.1需要匹配兼容的rpy2版本,rpy2 2.9.x确实兼容R 3.6,但需确保是通过Conda安装且未被pip版本覆盖:

  1. 先卸载现有rpy2:
    conda remove rpy2
    
  2. 清理可能残留的pip安装版本:
    pip uninstall rpy2 -y
    
  3. 重新安装指定版本的rpy2:
    conda install rpy2=2.9.4 -c conda-forge
    

3. 配置Jupyter内核指向正确的Conda环境

确保Jupyter使用的是目标Conda环境的内核:

  1. 激活目标环境:
    conda activate this_env_name
    
  2. 安装ipykernel并注册内核:
    conda install ipykernel
    python -m ipykernel install --user --name=this_env_name
    
  3. 在Jupyter中切换到this_env_name内核运行代码。

4. 验证环境一致性

重新运行检测代码,确认输出的Python版本、rpy2版本、R版本均与Conda环境配置一致:

import sys
import rpy2
import rpy2.situation

print(f"Python version: {sys.version}")
print(f"rpy2 version: {rpy2.__version__}")
for row in rpy2.situation.iter_info():
    print(row)

内容的提问来源于stack exchange,提问作者EngrStudent

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 18:45:11