有一件事,我不明白。
为什么会这样
import scipy # happens with several other modules, too. I took scipy as an example now...
matrix = scipy.sparse.coo_matrix(some_params)
产生这个错误:
AttributeError: 'module' object has no attribute 'sparse'
有一件事,我不明白。
为什么会这样
import scipy # happens with several other modules, too. I took scipy as an example now...
matrix = scipy.sparse.coo_matrix(some_params)
产生这个错误:
AttributeError: 'module' object has no attribute 'sparse'
发生这种情况是因为该scipy
模块没有任何名为sparse
. 该属性仅在您import scipy.sparse
.
当您只是 ; 时,子模块不会自动导入import scipy
;您需要明确导入它们。大多数包也是如此,尽管包可以根据需要选择导入自己的子模块。(例如,如果scipy/__init__.py
包含一个 statement import scipy.sparse
,那么sparse
无论何时 import 都会导入子模块。scipy
)
因为你导入了 scipy,而不是稀疏的。试试from scipy import sparse
?
当对象的属性不可用时引发AttributeError 。
属性引用是一个主要的,后跟一个句点和一个名称:
属性引用 ::= 主要“。” 标识符
要返回该对象的有效属性列表,请使用dir()
,例如:
dir(scipy)
所以可能你需要做的很简单:import scipy.sparse
Python 中的默认命名空间是"__main__"
. 当您使用 时import scipy
,Python 会创建一个单独的命名空间作为您的模块名称。Pyhton 中的规则是:当你想从另一个命名空间调用一个属性时,你必须使用完全限定的属性名。