模块“scipy.sparse”在网状虚拟环境中没有属性“linalg”错误

Hug*_*den 5 python r scipy reticulate

我已经编写了一个函数,它的工作原理与我在 python 中想要的完全一样,但是当我尝试在 RI 中运行它时,遇到了网状的问题。我已经解决了这个问题并将其简化为这个问题。我在 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
Run Code Online (Sandbox Code Playgroud)

本质上,该函数采用 csr_matrix 并返回其最大特征值。它应该适用于任何 csr_matrix。当我使用网状运行此代码时出现错误,解决此问题将解决我更大的问题。

要在网状中运行此代码,我运行

library(reticulate)
use_virtualenv("default")
Run Code Online (Sandbox Code Playgroud)

我之前运行过此代码以将 scipy 安装到此虚拟环境

virtualenv_install("default", c("scipy"))
Run Code Online (Sandbox Code Playgroud)

然后我用过

source_python("file_name.py")
Run Code Online (Sandbox Code Playgroud)

加载我的所有 python 函数,包括上面的函数。除了上面的函数之外,我加载的所有其他函数都可以完美运行。当我尝试运行它时,我收到以下错误

py_call_impl 中的错误(可调用,dots$args,dots$keywords):AttributeError:模块“scipy.sparse”没有属性“linalg”

我在这里有点超出我的深度,我尝试运行类似的代码

virtualenv_install("default", c("scipy.sparse"))
Run Code Online (Sandbox Code Playgroud)

但这会导致更多错误并且不起作用。任何帮助,将不胜感激!谢谢你!

War*_*ser 7

将此显式导入添加到您的代码中:

import scipy.sparse.linalg
Run Code Online (Sandbox Code Playgroud)

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