为什么python中出现这个AttributeError?

Auf*_*ind 38 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)
Run Code Online (Sandbox Code Playgroud)

产生这个错误:

AttributeError: 'module' object has no attribute 'sparse'
Run Code Online (Sandbox Code Playgroud)

Dav*_*d Z 51

发生这种情况是因为scipy模块没有任何名为的属性sparse.该属性仅在您定义时定义import scipy.sparse.

当你刚才import scipy,子模块不会自动导入; 你需要明确导入它们.大多数软件包也是如此,尽管软件包可以根据需要选择导入自己的子模块.(例如,如果scipy/__init__.py包括一份声明import scipy.sparse,然后将sparse子模块会随时导入进口scipy.)

  • 我认为值得注意的是,主要原因是存在不区分大小写的文件系统(即Windows).在这样的系统上,很难知道文件"sparse.py"是否应该作为一个名为`sparse`,`Sparse`,甚至`SParse`或`sParse`的模块导入(如果它有什么东西到或许可以解析S表达式.Python选择保证区分大小写和不区分大小写的文件系统的一致行为,方法是要求显式导入以告诉它正确的名称(在程序中或在包中`__init __.py`). (5认同)

Dan*_*Dan 5

因为你导入了scipy,而不是sparse。试试from scipy import sparse?