在reticulate虚拟环境中,出现了“Module 'scipy.sparse' has no attribute 'linalg'”错误。

5

我已经编写好了一个在Python中完全按照我的预期工作的函数,但当我尝试在R中运行它时,我遇到了reticulate的问题。我已经排除了问题并将其缩小为这个问题。我在Python中有这个函数:

def get_largest_eigenvalue(inc_mat):
    eigen_val = scipy.sparse.linalg.eigs(inc_mat, k = 1)
    eigen_val = eigen_val[0] / inc_mat.shape[0]
    return eigen_val

基本上,这个函数接收一个csr_matrix并返回其最大特征值。它应该适用于任何csr_matrix。当我使用reticulate运行此代码时,我会出现错误,解决这个问题将解决我的更大问题。

在reticulate中运行此代码,您可以执行以下操作:

library(reticulate)
use_virtualenv("default")

我之前已经运行了这段代码在虚拟环境中安装scipy

virtualenv_install("default", c("scipy"))

我随后使用了

source_python("file_name.py")

为了加载我所有的Python函数,包括上面那个函数。我已经成功加载了所有其他函数,除了上面那个函数。当我尝试运行它时,会出现以下错误信息:
“py_call_impl(callable, dots$args, dots$keywords)中的错误: AttributeError: module 'scipy.sparse' has no attribute 'linalg'”
在这方面,我有些不知所措,我尝试过运行类似下面这样的代码:
virtualenv_install("default", c("scipy.sparse"))

但这会导致更多的错误,而且不起作用。非常感谢任何帮助!谢谢!
1个回答

7
将此明确的导入语句添加到您的代码中:
import scipy.sparse.linalg

仅导入scipy.sparse模块并不会自动导入linalg子模块。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接