我在导入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.special
和sp.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'>
>>>
所以我现在可以通过special
和sp
命名空间访问scipy
模块。有趣的是,我可以通过scipy
命名空间访问其余的scipy。
第一个问题:为什么special
模块不会第一次导入?
第二个问题:如何在不定义special
命名空间的情况下,通过sp
命名空间访问scipy
模块?
编辑:使用Python 2.7.2和scipy 0.10.1
答案 0 :(得分:18)
默认情况下,“import scipy”不会导入任何子包。有太多的子包装和大型Fortran扩展模块,加载速度很慢。我不建议您使用import scipy
或缩写import scipy as sp
。它不是很有用。使用from scipy import special
,from scipy import linalg
等