rpy2.rinterface.RRuntimeError:错误:.onLoad在'hdf5r'的loadNamespace()中失败

时间:2019-01-02 19:29:50

标签: python-3.x conda rpy2

我编写了一个使用python的{​​{1}}脚本(python 3.6)。 rpy2的版本为R。我运行3.5.1时出现错误:

  

/Users/kipnislab/anaconda3/envs/rmain/lib/python3.6/site-packages/rpy2/rinterface/ init 。py:146:RRuntimeWarning:错误:程序包或名称空间加载失败对于“ Seurat”:    .onLoad在'hdf5r'的loadNamespace()中失败,详细信息:     致电:fun(libname,pkgname)     错误:检索当前错误处理程序时出错

我从中看到importr('Seurat')需要导入importr('Seurat'),但失败。我在虚拟hdf5r环境中工作。启动conda并运行R很好。如果我只是打开library('Seurat')并运行spyder,它也可以正常工作,但是在终端机importr('Seurat')中运行时,它会失败,并显示上述错误。我使用python seurat_clustering.py以及在hdf5r内安装了conda,但没有帮助。如果我在R中运行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'已损坏

更新

问题仍然没有解决,但我在这里找到了问题。以下导入接连执行导致该问题:

spyder

因此,一个文件正在导入import hdf5 from rpy2.robjects.packages import importr seuratLib = importr('Seurat') ,以打开文件并加载正确的数据,但是由于这个原因,我无法导入hdf5。我想应该有一种在导入Seurat之前卸载hdf5的方法。

1 个答案:

答案 0 :(得分:0)

最终,我通过切换导入顺序解决了该问题:首先导入所有与rpy2相关的软件包,然后导入Seurat,然后再导入h5py(在一个单独的文件中进行数据检索。

from rpy2.robjects.packages import importr
seuratLib = importr('Seurat')
import nice_service as ns

nice_service里面我有import hdf5