使用 rpy2 加载 R 包时 R 内核崩溃

fko*_*gel 7 python r rpy2 jupyter-notebook seurat

首先,我\xe2\x80\x99m是rpy2 / jupyter的新手,所以请不要\xe2\x80\x99判断我这是否是\xe2\x80\x99t提问的正确位置。

\n\n

我正在尝试使用 R 和 Python 建立一个用于数据分析的集成工作流程,但遇到以下错误:

\n\n

我使用的是 Ubuntu 19.04。使用 Jupyter 1.0.0、Python 3.7.4、R 3.5.1、r-irkernel 1.0.2 和 rpy2 3.1.0 运行 conda 环境,并通过 R 安装了 R 包 Seurat。

\n\n

当我使用 R 内核创建 Jupyter 笔记本时,我可以library(Seurat)很好地加载 Seurat。

\n\n

我还可以使用 rpy2 和 rmagic 在 python 中使用 R 代码,例如:

\n\n
%load_ext rpy2.ipython\n
Run Code Online (Sandbox Code Playgroud)\n\n
%%R\ndata(allen, package = \'scRNAseq\')\nadata_allen <- as(allen, \'SingleCellExperiment\')\n
Run Code Online (Sandbox Code Playgroud)\n\n

然而,当我尝试使用 rpy2 加载 Seurat 时,内核崩溃了:

\n\n
%%R\nlibrary(Seurat)\n
Run Code Online (Sandbox Code Playgroud)\n\n

我收到以下消息:

\n\n
\n

内核正在重新启动
\n 内核似乎已死亡。它将自动重新启动

\n
\n\n

Jupyter 在命令行中给出以下消息:

\n\n
%%R\ndata(allen, package = \'scRNAseq\')\nadata_allen <- as(allen, \'SingleCellExperiment\')\n
Run Code Online (Sandbox Code Playgroud)\n\n

请注意,其他库(例如library(dplyr)load)使用 rpy2 就可以了。

\n\n

我完整的 conda 环境可以在附加的文本文件中找到。

\n\n

我只能\xe2\x80\x99t 似乎找出导致问题的原因。有没有办法从 Jupyter 获取更详细的错误消息?

\n\n

我们将非常感谢您的帮助!

\n\n

问候菲利克斯

\n

lga*_*ier 4

**这是对原始答案的编辑 - 段错误不应再发生。**

R 包Seurat使用另一个名为 的 R 包reticulate,提供从 R 到 Python 的桥梁。

rpy2 端的 cffi 释放 Python GIL 的问题,以及网状端无法确保获取 GIL 的问题导致了长时间的段错误。但是,当前(2023)版本的 rpy2 和 reticulate 应该可以协同工作。