我写了一个使用python
一个3.6
脚本(蟒蛇rpy2
)。 R
版本是3.5.1
。当我运行importr('Seurat')
这是给我的错误:
/Users/kipnislab/anaconda3/envs/rmain/lib/python3.6/site-packages/rpy2/rinterface/init.py:146:RRuntimeWarning:错误:包或命名空间负载失败“修拉”:.onLoad在loadNamespace失败()为 'hdf5r',细节:致电:好玩(LIBNAME,PKGNAME)错误:错误检索当前的错误处理程序
从中我看到importr('Seurat')
需要进口hdf5r
和失败。我在虚拟conda
环境中工作。启动R
和运行library('Seurat')
工作得很好。如果我只是开spyder
并运行importr('Seurat')
它也工作正常,但在终端上运行时:python seurat_clustering.py
失败与上述错误。我安装hdf5r
使用conda
和也在里面R
,但它并没有帮助。如果我在importr('hdf5r')
运行spyder
它提供了一个有趣的警告,可能是这里重要的(虽然不是错误,因此它实际上加载罚款):
/Users/kipnislab/anaconda3/envs/rmain/lib/python3.6/site-packages/rpy2/rinterface/init.py:146:RRuntimeWarning:错误:延迟加载数据库“/用户/ 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
的一种方式。
最终,我通过切换进口秩序固定的问题:第一个导入所有的rpy2
相关的软件包,然后Seurat
,才把h5py
(在一个单独的文件,做数据检索)。
from rpy2.robjects.packages import importr
seuratLib = importr('Seurat')
import nice_service as ns
里面nice_service
的我import hdf5