2012-03-22 4 views
11

scipy.specialパッケージをインポートする際に問題があります。それは有害ではなく、ちょうど迷惑な/面白いです。scipy.specialインポート問題

私はimport scipy as spを使用してscipyのダウンロードインポートしてアクセスsp.specialにしようとすると私が取得:

>>> import scipy as sp 
>>> sp.special 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
AttributeError: 'module' object has no attribute 'special' 
>>> 

が、私は、その後import scipy.specialを行う場合、私はscipy.specialsp.specialを通じて特別なモジュールにアクセスすることができます

>>> import scipy as sp 
>>> import scipy.special 
>>> scipy.special 
<module 'scipy.special' from 'C:\Python27\lib\site-packages\scipy\special\__init__.pyc'> 
>>> sp.special 
<module 'scipy.special' from 'C:\Python27\lib\site-packages\scipy\special\__init__.pyc'> 
>>> 

をだからモジュールはspscipyの両方の名前空間からアクセスできるようになりました。興味深いのは、私がscipy名前空間を通して残りのscipyにアクセスできることです。

最初の質問:なぜspecialモジュールが最初にラウンドをインポートしないのですか?

2番目の質問:scipy名前空間を定義せずに、sp名前空間のみでspecialモジュールにアクセスするにはどうすればよいですか?

編集:デフォルトのPython 2.7.2とscipyのダウンロード0.10.1

答えて

15

を使用して、 "インポートscipyのダウンロードには、" 任意のサブパッケージをインポートしません。ロードに時間がかかる大規模なFortran拡張モジュールを持つサブパッケージが多すぎます。 import scipyや、import scipy as spと略記することはお勧めしません。あまり役に立ちません。 from scipy import specialfrom scipy import linalgなど

+0

ありがとう、私は将来そのことを念頭に置いておきます。どこに明示的にこれを述べているのはどこですか? [API](http://docs.scipy.org/doc/scipy-0.10.1/reference/api.html)の文書 –

+1

にこのようなコメントが見当たらないのですが、それは古いコメントですが、それでもまだFAQがあります。http://docs.scipy.org/doc/scipy/reference/api.html#guidelines-for-importing-functions-from-scipy –

関連する問題