【问题标题】:Jupyter notebook - rpy2 - Cannot find R librariesJupyter notebook - rpy2 - 找不到 R 库
【发布时间】:2021-02-06 10:06:48
【问题描述】:

我目前正尝试在同一个 Jupyter Notebook 中同时使用 R 和 Python。我成功安装了rpy2;如果我尝试在 R 中写一些东西(将%%R 放在开头)一切正常,但是一旦我尝试使用库,就会出现以下错误:

R[写入控制台]:库中的错误(包名):没有包 调用 - 包的名称 -

如果我尝试在 R Studio(而不是 Jupyter)中使用相同的库,一切正常。

这是给我带来麻烦的代码:

import os
os.environ['R_HOME'] = r'C:/PROGRA~1/R/R-40~1.0'
os.environ['path'] += r';C:/PROGRA~1/R/R-40~1.0\bin;'
%load_ext rpy2.ipython

%%R
library(readr)

在最后一行之后出现以下错误:

R[写入控制台]:库中的错误(readr):没有名为“readr”的包

库(readr) 中的错误:没有名为“readr”的包 -------------------------------------------------- ------------------------- RRuntimeError Traceback(最近一次调用 最后的) ~\anaconda3\envs\Cattolica2020\lib\site-packages\rpy2\ipython\rmagic.py 在评估(自我,代码) 267 # 如果代码的最后一行是注释,则需要换行符。 --> 268 值,可见 = ro.r("withVisible({%s\n})" % code) 269 除外 (ri.embedded.RRuntimeError, ValueError) 为异常:

~\anaconda3\envs\Cattolica2020\lib\site-packages\rpy2\robjects_init_.py 在调用(自我,字符串) 415 p = rinterface.parse(字符串) --> 416 res = self.eval(p) 417 返回转换.rpy2py(res)

~\anaconda3\envs\Cattolica2020\lib\site-packages\rpy2\robjects\functions.py 在 调用(self, *args, **kwargs) 第196章 --> 197 返回 (super(SignatureTranslatedFunction, self) 198 .调用(*args,**kwargs))

~\anaconda3\envs\Cattolica2020\lib\site-packages\rpy2\robjects\functions.py 在 调用(self, *args, **kwargs) 124 new_kwargs[k] = 转换.py2rpy(v) --> 125 res = super(Function, self).call(*new_args, **new_kwargs) 126 res = 转换.rpy2py(res)

~\anaconda3\envs\Cattolica2020\lib\site-packages\rpy2\rinterface_lib\conversion.py 在 _(*args, **kwargs) 43 def _(*args, **kwargs): ---> 44 cdata = 函数(*args,**kwargs) 45 # TODO: 测试 cdata 是预期的 CType

~\anaconda3\envs\Cattolica2020\lib\site-packages\rpy2\rinterface.py 在 调用(self, *args, **kwargs) 623 如果错误发生[0]: --> 624 引发嵌入式.RRuntimeError(_rinterface._geterrmessage()) 625返回资源

RRuntimeError: 库中的错误(readr) : 没有调用包 '阅读器'

在处理上述异常的过程中,又发生了一个异常:

RInterpreterError Traceback(最近调用 最后的) ~\anaconda3\envs\Cattolica2020\lib\site-packages\rpy2\ipython\rmagic.py 在 R(self, line, cell, local_ns) 762 其他: --> 763 text_result,结果,可见 = self.eval(code) 第764章

~\anaconda3\envs\Cattolica2020\lib\site-packages\rpy2\ipython\rmagic.py 在评估(自我,代码) 第271章 --> 272 引发 RInterpreterError(代码,str(异常), 第273章

RInterpreterError:无法解析和评估行 '图书馆(读者)\ n'。 R 错误消息:“库中的错误(阅读器):那里 没有名为'readr'的包”

在处理上述异常的过程中,又发生了一个异常:

PermissionError Traceback(最近调用 最后)在 ----> 1 get_ipython().run_cell_magic('R', '', 'library(readr)\n')

~\anaconda3\envs\Cattolica2020\lib\site-packages\IPython\core\interactiveshell.py 在 run_cell_magic(self, magic_name, line, cell) 2379
使用 self.builtin_trap: 2380 args = (magic_arg_s, 细胞) -> 2381 结果 = fn(*args, **kwargs) 2382 返回结果 2383

在 R(self, line, cell, local_ns)中

~\anaconda3\envs\Cattolica2020\lib\site-packages\IPython\core\magic.py 在 (f, *a, **k) 185 # 但对于那一点状态来说就有点过分了。 第186章 --> 187 调用 = lambda f, *a, **k: f(*a, **k) 188 189 如果可调用(arg):

~\anaconda3\envs\Cattolica2020\lib\site-packages\rpy2\ipython\rmagic.py 在 R(self, line, cell, local_ns) 782打印(e.err) 783 如果 tmpd: --> 784 rmtree(tmpd) 785返回 786终于:

~\anaconda3\envs\Cattolica2020\lib\shutil.py in rmtree(path, 忽略错误,错误) 735 # 即使 onerror 钩子返回也不能继续 736返回 --> 737 返回_rmtree_unsafe(路径,onerror) 738 739 # 允许自省是否针对符号链接进行加固

~\anaconda3\envs\Cattolica2020\lib\shutil.py in _rmtree_unsafe(path, 错误) 第613章 614 除了 OSError: --> 615 onerror(os.unlink, 全名, sys.exc_info()) 616尝试: 第617章

~\anaconda3\envs\Cattolica2020\lib\shutil.py in _rmtree_unsafe(path, 错误) 611 其他: 612尝试: --> 613 os.unlink(全名) 614 除了 OSError: 615 onerror(os.unlink,全名,sys.exc_info())

PermissionError:[WinError 32] 不可能的附加文件。 Il 档案è utilizzato da un altro 处理: 'C:\Users\User\AppData\Local\Temp\tmp82eo8sb4\Rplots001.png'

我还尝试验证 Jupyter 和 R 的库目录是否相同,并且我获得了相同的两个目录:

[1] "C:/Users/User/Documents/R/win-library/4.0" [2] "C:/Program Files/R/R-4.0.0/library

我目前正在使用 R 4.0.0 和 Python 3.8.3

【问题讨论】:

    标签: python r jupyter-notebook rpy2


    【解决方案1】:

    RRuntimeError 异常通常只是将 R 在执行期间自己生成的异常转发给 Python。

    错误消息说 R 没有找到库。如果您确实确定 RStudio 和 Jupyter 都使用安装的完全相同的 R,那么两者之间的差异将来自于 RStudio 被指示在比从 Jupyter 启动的 R 更多的目录中查找已安装的 R 包。

    在 RStudio 中运行以下命令以了解 readr 的加载位置:

    library(dplyr)
    as_data_frame(installed.packages()) %>%
      filter(Package == "readr") %>%
      select(Package, LibPath)
    

    【讨论】:

      猜你喜欢
      • 2019-11-03
      • 1970-01-01
      • 1970-01-01
      • 2019-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多