scipy.special导入问题

时间:2012-03-22 09:46:20

标签: python scipy

我在导入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'>
>>>

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

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

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

编辑:使用Python 2.7.2和scipy 0.10.1

1 个答案:

答案 0 :(得分:18)

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