わからないことが一つあります。
なぜこれなのか
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'
わからないことが一つあります。
なぜこれなのか
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
。
import scipy
サブモジュールは、;だけでは自動的にインポートされません。それらを明示的にインポートする必要があります。同じことがほとんどのパッケージにも当てはまりますが、パッケージは必要に応じて独自のサブモジュールをインポートすることを選択できます。(たとえばscipy/__init__.py
、ステートメントが含まれている場合import scipy.sparse
、インポートするたびにサブモジュールがインポートされます。)sparse
scipy
スパースではなく、scipyをインポートしたためです。やってみfrom scipy import sparse
ますか?
オブジェクトの属性が使用できない場合、 AttributeErrorが発生します。
属性参照は、プライマリの後にピリオドと名前が続きます。
attributeref::=プライマリ"。" 識別子
そのオブジェクトの有効な属性のリストを返すにはdir()
、たとえば次を使用します。
dir(scipy)
したがって、おそらく単純に行う必要があります。import scipy.sparse
Pythonのデフォルトの名前空間はです"__main__"
。を使用するimport scipy
と、Pythonはモジュール名として別の名前空間を作成します。Pyhtonのルールは次のとおりです。別の名前空間から属性を呼び出す場合は、完全修飾属性名を使用する必要があります。