【发布时间】:2019-05-29 10:36:39
【问题描述】:
我写了一个使用rpy2 的python 脚本(python 3.6)。 R 版本是 3.5.1。当我运行importr('Seurat') 时,它给了我错误:
/Users/kipnislab/anaconda3/envs/rmain/lib/python3.6/site-packages/rpy2/rinterface/init.py:146:RRuntimeWarning:错误:包或命名空间加载失败对于“修拉”: .onLoad 在“hdf5r”的 loadNamespace() 中失败,详细信息: 调用:乐趣(libname,pkgname) error: 检索当前错误处理程序时出错
从中我看到importr('Seurat') 需要导入hdf5r 并且它失败了。我在虚拟conda 环境中工作。启动 R 并运行 library('Seurat') 工作正常。如果我只是打开 spyder 并运行 importr('Seurat') 它也可以正常工作,但是在终端中运行时:python seurat_clustering.py 它会失败并出现上述错误。我使用conda 和R 安装了hdf5r,但它没有帮助。如果我在spyder 中运行importr('hdf5r'),它会给出一个有趣的警告,这在这里可能很重要(虽然不是错误,所以它实际上加载得很好):
/Users/kipnislab/anaconda3/envs/rmain/lib/python3.6/site-packages/rpy2/rinterface/init.py:146:RRuntimeWarning:错误:延迟加载数据库' /Users/kipnislab/anaconda3/envs/rmain/lib/R/library/hdf5r/R/hdf5r.rdb' 已损坏
更新
问题仍未解决,但我在这里找到了问题。一个接一个地执行以下导入会导致问题:
import hdf5
from rpy2.robjects.packages import importr
seuratLib = importr('Seurat')
所以,一个文件正在导入hdf5 以打开文件并加载正确的数据,但我无法导入Seurat,因此。我想应该有一种在导入Seurat之前卸载hdf5的方法。
【问题讨论】:
-
很可能是 conda 和/或您的安装存在问题。
标签: python-3.x conda rpy2