使用 rpy2 加载 R 包时 R 内核崩溃
R kernel crashes while loading R package using rpy2
首先,我是 rpy2 / jupyter 的新手,所以如果这不是问我问题的正确位置,请不要评判我。
我正在尝试使用 R 和 Python 设置集成的数据分析工作流程,但遇到以下错误:
我在 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-package Seurat。
当我使用 R 内核创建 Jupyter notebook 时,我可以用 library(Seurat)
加载 Seurat 就好了。
我还可以使用 rpy2 和 rmagic 在 python 中使用 R 代码,例如:
%load_ext rpy2.ipython
%%R
data(allen, package = 'scRNAseq')
adata_allen <- as(allen, 'SingleCellExperiment')
然而,当我尝试使用 rpy2 加载 Seurat 时,内核崩溃了:
%%R
library(Seurat)
我收到以下消息:
Kernel Restarting
The kernel appears to have died. It will restart automatically
Jupyter 在命令行中给出以下消息:
[I 16:39:01.388 NotebookApp] KernelRestarter: restarting kernel (1/5), keep random ports
kernel 23284ec0-63d5-4b61-9ffa-b52d19851eab restarted
请注意,library(dplyr)
等其他库使用 rpy2 加载得很好。
我完整的conda环境可以在附件text file.
中找到
我似乎无法弄清楚是什么导致了这个问题。有没有办法从 Jupyter 获取更详细的错误消息?
非常感谢您的帮助!
问候菲利克斯
R 包 Seurat
正在使用另一个名为 reticulate
的 R 包,提供从 R 到 Python 的桥梁。
不幸的是,每当涉及 rpy2
和 reticulate
时,R 最终会被初始化两次,这不可避免地会导致段错误。在撰写本文时,这仍然是一个未解决的错误。 rpy2
端的问题跟踪(可以在此处找到 reticulate
端的 link 跟踪)在这里:
https://bitbucket.org/rpy2/rpy2/issues/456/reticulate-rpy2-sharing-r-process
我和你有同样的问题。但我降级到 Seurat 3.0.2,你的问题将得到解决。要将用户定义的 R 内核用于带有 conda 的 rpy2,运行 最开始之前的代码(在 imoort rpy2 之前)
# user defined R installation
import os
os.environ['R_HOME'] = '/path/to/miniconda/envs/seurat/lib/R' #path to your R installation
os.environ['R_USER'] = '/path/to/miniconda/lib/python3.7/site-packages/rpy2' #path depends on where you installed Python.
这对我有用,但在从 rpy2 导入 robjects 时面临内核死机的问题:
import os
os.environ['R_HOME'] = '/Users/<your user>/anaconda3/envs/<env name>/lib/R'
# import your desired module
from rpy2.robjects.packages import importr
首先,我是 rpy2 / jupyter 的新手,所以如果这不是问我问题的正确位置,请不要评判我。
我正在尝试使用 R 和 Python 设置集成的数据分析工作流程,但遇到以下错误:
我在 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-package Seurat。
当我使用 R 内核创建 Jupyter notebook 时,我可以用 library(Seurat)
加载 Seurat 就好了。
我还可以使用 rpy2 和 rmagic 在 python 中使用 R 代码,例如:
%load_ext rpy2.ipython
%%R
data(allen, package = 'scRNAseq')
adata_allen <- as(allen, 'SingleCellExperiment')
然而,当我尝试使用 rpy2 加载 Seurat 时,内核崩溃了:
%%R
library(Seurat)
我收到以下消息:
Kernel Restarting
The kernel appears to have died. It will restart automatically
Jupyter 在命令行中给出以下消息:
[I 16:39:01.388 NotebookApp] KernelRestarter: restarting kernel (1/5), keep random ports
kernel 23284ec0-63d5-4b61-9ffa-b52d19851eab restarted
请注意,library(dplyr)
等其他库使用 rpy2 加载得很好。
我完整的conda环境可以在附件text file.
中找到我似乎无法弄清楚是什么导致了这个问题。有没有办法从 Jupyter 获取更详细的错误消息?
非常感谢您的帮助!
问候菲利克斯
R 包 Seurat
正在使用另一个名为 reticulate
的 R 包,提供从 R 到 Python 的桥梁。
不幸的是,每当涉及 rpy2
和 reticulate
时,R 最终会被初始化两次,这不可避免地会导致段错误。在撰写本文时,这仍然是一个未解决的错误。 rpy2
端的问题跟踪(可以在此处找到 reticulate
端的 link 跟踪)在这里:
https://bitbucket.org/rpy2/rpy2/issues/456/reticulate-rpy2-sharing-r-process
我和你有同样的问题。但我降级到 Seurat 3.0.2,你的问题将得到解决。要将用户定义的 R 内核用于带有 conda 的 rpy2,运行 最开始之前的代码(在 imoort rpy2 之前)
# user defined R installation
import os
os.environ['R_HOME'] = '/path/to/miniconda/envs/seurat/lib/R' #path to your R installation
os.environ['R_USER'] = '/path/to/miniconda/lib/python3.7/site-packages/rpy2' #path depends on where you installed Python.
这对我有用,但在从 rpy2 导入 robjects 时面临内核死机的问题:
import os
os.environ['R_HOME'] = '/Users/<your user>/anaconda3/envs/<env name>/lib/R'
# import your desired module
from rpy2.robjects.packages import importr