Python 3.x rpy2.rinterface.rrontimeerror:错误:';hdf5r';
我编写了一个Python 3.x rpy2.rinterface.rrontimeerror:错误:';hdf5r';,python-3.x,conda,rpy2,Python 3.x,Conda,Rpy2,我编写了一个python脚本(python3.6),它使用rpy2R版本为3.5.1。当我运行importr('Seurat')时,它给出了一个错误: /Users/kipnislab/anaconda3/envs/rmain/lib/python3.6/site packages/rpy2/rinterface/init。py:146:rrentimewarning:错误:“Seurat”的包或命名空间加载失败: .onLoad在“hdf5r”的loadNamespace()中失败,详细信息:
python
脚本(python3.6
),它使用rpy2
<代码>R版本为3.5.1
。当我运行importr('Seurat')时,它给出了一个错误:
/Users/kipnislab/anaconda3/envs/rmain/lib/python3.6/site packages/rpy2/rinterface/init。py:146:rrentimewarning:错误:“Seurat”的包或命名空间加载失败:
.onLoad在“hdf5r”的loadNamespace()中失败,详细信息:
电话:fun(libname,pkgname)
错误:检索当前错误处理程序时出错
从中我看到,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:rrentimewarning:Error:lazy-load-database'/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
的方法,最终我通过切换导入顺序解决了这个问题:首先导入所有与rpy2
相关的包,然后导入Seurat
,然后才导入h5py
(在一个单独的文件中进行数据检索)
在nice\u服务内部
我导入了hdf5
很可能是conda和/或您的安装出现了问题。
from rpy2.robjects.packages import importr
seuratLib = importr('Seurat')
import nice_service as ns