问题描述
有一件事,我不明白.
为什么会这样
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
时定义.
This happens because the scipy
module doesn't have any attribute named sparse
. That attribute only gets defined when you import scipy.sparse
.
当你只是 import scipy
时,子模块不会自动被导入;您需要明确导入它们.大多数包也是如此,尽管包可以根据需要选择导入自己的子模块.(例如,如果 scipy/__init__.py
包含一个语句 import scipy.sparse
,则sparse
子模块每当您导入 scipy
时都会被导入.)
Submodules don't automatically get imported when you just import scipy
; you need to import them explicitly. The same holds for most packages, although a package can choose to import its own submodules if it wants to. (For example, if scipy/__init__.py
included a statement import scipy.sparse
, then the sparse
submodule would be imported whenever you import scipy
.)
这篇关于为什么python中会出现这个AttributeError?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!