Специальная проблема импорта scipy.special

У меня проблема с импортом пакета 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'
>>>

но если я тогда сделаю 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

Ответ 1

По умолчанию "import scipy" не импортирует подпакет. Слишком много подпакетов с большими расширенными модулями Fortran, которые медленно загружаются. Я не рекомендую делать import scipy или сокращенно import scipy as sp. Это просто не очень полезно. Используйте from scipy import special, from scipy import linalg и т.д.