【问题标题】:OSError: cannot load library 'C:\Program Files\R\R-4.0.2\bin\x64\R.dll': error 0x7eOSError: 无法加载库 'C:\Program Files\R\R-4.0.2\bin\x64\R.dll': 错误 0x7e
【发布时间】:2020-12-30 22:39:58
【问题描述】:

我正在尝试将 rpy2 库导入 Jupyter Notebook,但无法克服此错误。

已添加 PATH 'C:\Program Files\R\R-4.0.2\bin\x64'。

这是我电脑上安装的唯一 R 版本。我已经完全卸载并重新安装了 R/Rstudio/Anaconda,但没有成功。

这是完整的错误:

---------------------------------------------------------------------------
OSError                                   Traceback (most recent call last)
<ipython-input-7-098f0d39b3a3> in <module>
----> 1 from rpy2.robjects import pandas2ri

C:\Anaconda\lib\site-packages\rpy2\robjects\__init__.py in <module>
     14 from functools import partial
     15 import types
---> 16 import rpy2.rinterface as rinterface
     17 import rpy2.rlike.container as rlc
     18 

C:\Anaconda\lib\site-packages\rpy2\rinterface.py in <module>
      4 import typing
      5 from typing import Union
----> 6 from rpy2.rinterface_lib import openrlib
      7 import rpy2.rinterface_lib._rinterface_capi as _rinterface
      8 import rpy2.rinterface_lib.embedded as embedded

C:\Anaconda\lib\site-packages\rpy2\rinterface_lib\openrlib.py in <module>
     42     rlib = _rinterface_cffi.lib
     43 else:
---> 44     rlib = _dlopen_rlib(R_HOME)
     45 
     46 

C:\Anaconda\lib\site-packages\rpy2\rinterface_lib\openrlib.py in _dlopen_rlib(r_home)
     35         raise ValueError('The library path cannot be None.')
     36     else:
---> 37         rlib = ffi.dlopen(lib_path)
     38     return rlib
     39 

OSError: cannot load library 'C:\Program Files\R\R-4.0.2\bin\x64\R.dll': error 0x7e

编辑:

这是我运行导入 rpy2 库的代码:

from rpy2.robjects import r, pandas2ri

【问题讨论】:

  • 你能提供更多细节吗?究竟是什么触发了错误消息?
  • 请发布引发错误的代码。单独的错误消息是没有帮助的。
  • 我提供了用于导入 rpy2 库的代码。
  • 您是否尝试重新启动内核或 jupyter 服务器?
  • 我已经重启了内核、服务器和我的电脑。错误仍然存​​在。

标签: python r jupyter-notebook anaconda rpy2


【解决方案1】:

这是我的工作解决方案:

import os
os.environ["R_HOME"] = r"D:\Install\R\R-3.6.1"
os.environ["PATH"]   = r"D:\Install\R\R-3.6.1\bin\x64" + ";" + os.environ["PATH"]
import rpy2
from rpy2.robjects import pandas2ri, packages
pandas2ri.activate()
stats = packages.importr('stats')

【讨论】:

  • ''r"D:\Install\R\R-3.6.1" 指的是什么?
【解决方案2】:

1 - Windows + IDE

对于那些使用 Anaconda 的用户,在 Windows 的环境变量 PATH 中添加以下内容:

C:\Program Files\R\R-4.0.3\bin\x64

您的 R 版本可能与“R-4.0.3”不同

2 - 蟒蛇

否则,请查看 Grayson Felt 的回复:

I found a solution here.

添加路径

C:\Users\username\Anaconda2;C:\Users\username\Anaconda2\Scripts;C:\Users\username\Anaconda2\Library\bin;C:\Users\username\Anaconda2\Library\mingw-w64 \lib;C:\Users\用户名\Anaconda2\Library\mingw-w64\bin

随后重新启动 Anaconda 解决了该问题。

3 - Windows 基本代码头

或者,按照布鲁诺的建议(并且更加复杂):

try:
    import rpy2.robjects as robjects
except OSError as e:
    try:
        import os
        import platform
        if ('Windows', 'Microsoft') in platform.system():
            os.environ["R_HOME"] = 'C:/Program Files/R/R-4.0.3/bin/x64'  # Your R version here 'R-4.0.3'
            os.environ["PATH"] = "C:/Program Files/R/R-4.0.3/bin/x64" + ";" + os.environ["PATH"]
        import rpy2.robjects as robjects
    except OSError:
        raise(e)

此代码对非 Windows 平台无效。 也可能需要针对不同的 R 版本进行调整。 如果它变得比这更复杂,您可能应该选择解决方案 1 或 2。

注意:如果您的 Python 和 R 版本采用不同的架构(x86 与 x64),您也可能会遇到此问题

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-06
    • 2014-01-09
    • 2017-09-12
    • 2014-01-26
    • 2012-06-13
    • 2013-02-05
    • 2017-03-05
    相关资源
    最近更新 更多