我编写了一个使用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
的方法。
答案 0 :(得分:0)
最终,我通过切换导入顺序解决了该问题:首先导入所有与rpy2
相关的软件包,然后导入Seurat
,然后再导入h5py
(在一个单独的文件中进行数据检索。
from rpy2.robjects.packages import importr
seuratLib = importr('Seurat')
import nice_service as ns
在nice_service
里面我有import hdf5