【问题标题】:rpy2.rinterface.RRuntimeError: Error: .onLoad failed in loadNamespace() for 'hdf5r'rpy2.rinterface.RRuntimeError:错误:'hdf5r'的 loadNamespace() 中的 .onLoad 失败
【发布时间】:2019-05-29 10:36:39
【问题描述】:

我写了一个使用rpy2python 脚本(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:错误:包或命名空间加载失败对于“修拉”: .onLoad 在“hdf5r”的 loadNamespace() 中失败,详细信息: 调用:乐趣(libname,pkgname) error: 检索当前错误处理程序时出错

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

更新

问题仍未解决,但我在这里找到了问题。一个接一个地执行以下导入会导致问题:

import hdf5
from rpy2.robjects.packages import importr
seuratLib = importr('Seurat')

所以,一个文件正在导入hdf5 以打开文件并加载正确的数据,但我无法导入Seurat,因此。我想应该有一种在导入Seurat之前卸载hdf5的方法。

【问题讨论】:

  • 很可能是 conda 和/或您的安装存在问题。

标签: python-3.x conda rpy2


【解决方案1】:

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

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

nice_service里面我有import hdf5

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-10
    • 2015-01-02
    • 1970-01-01
    • 2018-01-25
    • 2015-12-23
    • 2015-12-03
    相关资源
    最近更新 更多