首先,我是rpy 2/ jupyter的新手,所以如果这不是问我问题的正确地方,请不要评判我。
我试图使用R和Python设置数据分析的集成工作流程,遇到以下错误:
Ubuntu 19.04运行conda环境,使用Jupyter 1.0.0,Python 3.7.4,R 3.5.1,r-irkernel 1.0.2和rpy 2 3.1.0,我通过R安装了R包Seurat。
当我使用R内核创建Jupyter notebook时,我可以用library(Seurat)
加载Seurat。
我也可以在python中使用rpy 2和rmagic来使用R代码,比如:
%load_ext rpy2.ipython
%%R
data(allen, package = 'scRNAseq')
adata_allen <- as(allen, 'SingleCellExperiment')
然而,当我尝试使用rpy 2加载Seurat时,内核崩溃了:
%%R
library(Seurat)
我得到了以下信息:
内核重启
内核似乎已经死亡。它会自动重启
Jupyter在命令行中给出以下消息:
[I 16:39:01.388 NotebookApp] KernelRestarter: restarting kernel (1/5), keep random ports
kernel 23284ec0-63d5-4b61-9ffa-b52d19851eab restarted
请注意,其他库(如library(dplyr)
)使用rpy 2可以很好地加载。
我完整的conda环境可以在附件text file中找到。
我就是想不出是什么引起了这个问题。有没有一种方法可以从Jupyter获得更详细的错误消息?
您的帮助将不胜感激!
问候菲利克斯
5条答案
按热度按时间nc1teljy1#
这是对原始答案的编辑-segfault不应再发生。
R包
Seurat
使用了另一个R包reticulate
,它提供了从R到Python的桥梁。Python GIL由rpy 2端的cffi发布的问题,以及网状端无法确保获得GIL的问题导致了很长一段时间的segfault。但是,当前(2023)版本的rpy 2和reticulate应该可以一起工作。
ozxc1zmp2#
我也有同样的问题。但我降级到修拉3.0.2,你的问题将得到解决。要在conda中为rpy2使用用户定义的R内核,请在最开始(imoort rpy2之前)运行之前的代码
uqzxnwby3#
这对我来说很有效,同时在从rpy2导入对象时面临内核死亡的问题:
vsnjm48y4#
我也遇到了同样的问题,我也在docker中使用R和python以及Jupyter notebook。
我解决了内核崩溃的问题,我的notebook或Python代码如下:
/usr/lib/R是我的系统的R安装和库的位置,并且应该是rpy 2所需的R版本。希望这能帮上忙。
hi3rlvi25#
我尝试在
jupyter/r-notebook:hub-2.3.1
Docker镜像中安装rpy2
,该镜像随Python 3.10.5、IPython 8.4.0、R 4.1.3一起提供。如果我在终端窗口中安装
rpy2
和pip
:我在终端中启动IPython,输入
import rpy2
,第一步就成功了。但下一步,即:import rpy2.robjects as robjects
会导致以下不太有指导意义的错误消息:原因是PyPI上的
rpy2
包与jupyter/r-notebook
镜像中的Python和R安装之间存在一些微妙的不兼容性。发生不兼容的原因是Python和R * 是使用Conda* 在r-notebook
映像中安装的。如果我同时安装
rpy2
* 和Conda*,如下所示:那么一切都能像广告上说的那样工作。
经验教训
1.如果Python和R是用OS包安装程序安装的,那么你可以 * 很可能 * 用
pip
安装rpy2
。1.如果Python和R是用Conda安装的,那么也用Conda安装
rpy2
。1.(最尴尬的一点):有一个
jupyter/datascience-notebook
,它预装了rpy2
(加上很多其他的好东西),不需要安装任何东西:jupyter/datascience-notebook包含来自Julia、Python和R社区的数据分析库。
jupyter/scipy-notebook和jupyter/r-notebook镜像中的所有内容,以及它们的祖先镜像rpy 2包Julia编译器和基本环境IJulia用于支持Jupyter笔记本HDF 5、Gadfly、RDasets包中的Julia代码