为什么python中出现这个AttributeError?

时间:2012-01-01 23:34:06

标签: python import attributeerror

有一件事,我不明白。

为什么会这样

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'

4 个答案:

答案 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中的规则是:当您想要从另一个名称空间调用属性时,您必须使用完全限定的属性名称。