45

わからないことが一つあります。

なぜこれなのか

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

4 に答える 4

60

これは、scipyモジュールに。という名前の属性がないために発生しますsparse。その属性は、次の場合にのみ定義されますimport scipy.sparse

import scipyサブモジュールは、;だけでは自動的にインポートされません。それらを明示的にインポートする必要があります。同じことがほとんどのパッケージにも当てはまりますが、パッケージは必要に応じて独自のサブモジュールをインポートすることを選択できます。(たとえばscipy/__init__.py、ステートメントが含まれている場合import scipy.sparse、インポートするたびにサブモジュールがインポートされます。)sparsescipy

于 2012-01-01T23:36:22.487 に答える
5

スパースではなく、scipyをインポートしたためです。やってみfrom scipy import sparseますか?

于 2012-01-01T23:36:32.293 に答える
4

オブジェクトの属性が使用できない場合、 AttributeErrorが発生します。

属性参照は、プライマリの後にピリオドと名前が続きます。

attributeref::=プライマリ"。" 識別子

そのオブジェクトの有効な属性のリストを返すにはdir()、たとえば次を使用します。

dir(scipy)

したがって、おそらく単純に行う必要があります。import scipy.sparse

于 2015-05-23T16:53:22.243 に答える
-3

Pythonのデフォルトの名前空間はです"__main__"。を使用するimport scipyと、Pythonはモジュール名として別の名前空間を作成します。Pyhtonのルールは次のとおりです。別の名前空間から属性を呼び出す場合は、完全修飾属性名を使用する必要があります。

于 2017-08-19T11:42:32.390 に答える