我编写了一个使用python的3.6脚本(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: Error:“Seurat”的包或命名空间加载失败:.onLoad在loadNamespace()中失败,用于“hdf5r”,详细信息:调用:RRuntimeWarning(libname,pkgname)错误:检索当前错误处理程序时出错
从中我看到importr('Seurat')需要导入hdf5r,但是它失败了。我正在虚拟conda环境中工作。启动R和运行library('Seurat')工作得很好。如果我只是打开spyder并运行importr('Seurat'),它也可以正常工作,但是当运行在终端:python seurat_clustering.py中时,它会失败,出现上面的错误。我使用conda安装了conda,也在R中安装了它,但是没有帮助。如果我在importr('hdf5r')中运行spyder,它会给出一个有趣的警告,这个警告在这里可能很重要(但不是错误,所以它实际上加载得很好):
/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。我认为在导入hdf5之前应该有一种卸载Seurat的方法。
发布于 2019-02-04 23:05:36
最后,我通过切换导入顺序解决了这个问题:首先导入所有rpy2-related包,然后导入Seurat,然后才导入h5py (在一个单独的文件中进行数据检索)。
from rpy2.robjects.packages import importr
seuratLib = importr('Seurat')
import nice_service as ns在nice_service里面我有import hdf5
https://stackoverflow.com/questions/54012116
复制相似问题