有一件事,我不明白。
为什么会这样
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'
答案 0 :(得分:47)
这是因为scipy
模块没有任何名为sparse
的属性。该属性仅在您import scipy.sparse
时定义。
仅import scipy
时,子模块不会自动导入;你需要明确导入它们。大多数软件包也是如此,尽管软件包可以根据需要选择导入自己的子模块。 (例如,如果scipy/__init__.py
包含语句import scipy.sparse
,则,只要导入sparse
,就会导入scipy
子模块。)
答案 1 :(得分:3)
因为你导入的是scipy,而不是稀疏的。试试from scipy import sparse
?
答案 2 :(得分:2)
AttributeError在对象的属性不可用时引发。
attribute reference是主要的,后跟句点和名称:
attributeref :: = primary"。"标识符
要返回该对象的有效属性列表,请使用dir()
,例如:
dir(scipy)
所以你可能需要简单地做:import scipy.sparse
答案 3 :(得分:-2)
Python中的默认命名空间是"__main__"
。使用import scipy
时,Python会创建一个单独的命名空间作为模块名称。
Pyhton中的规则是:当您想要从另一个名称空间调用属性时,您必须使用完全限定的属性名称。