scipy.special导入问题

Iai*_*ist 16 python scipy

我有一个导入scipy.special包的问题.它没有害处,只是讨厌/有趣.

当我导入scipy使用import scipy as sp然后尝试访问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'
>>>
Run Code Online (Sandbox Code Playgroud)

但如果我那么做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'>
>>>
Run Code Online (Sandbox Code Playgroud)

所以我现在special可以通过命名空间spscipy命名空间访问模块.有趣的是,我可以通过scipy命名空间访问其余的scipy .

第一个问题:为什么special模块不能第一次导入?

第二个问题:如何specialsp不定义scipy命名空间的情况下仅通过命名空间访问模块?

编辑:使用Python 2.7.2和scipy 0.10.1

Rob*_*ern 22

默认情况下,"import scipy"不会导入任何子包.有太多的子包装和大型Fortran扩展模块,加载速度很慢.我不建议做import scipy或缩写import scipy as sp.它不是很有用.使用from scipy import special,from scipy import linalg等等.

  • 我知道这是一个古老的评论,但它仍然是一个常见问题解答,因此这里是一个资源:http://docs.scipy.org/doc/scipy/reference/api.html#guidelines-for-importing-functions-from-scipy (2认同)