scipy.special проблема импорта - PullRequest
16 голосов
/ 22 марта 2012

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

21 голосов
/ 22 марта 2012

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...