2012-03-22 7 views
11

Tengo un problema con la importación del paquete scipy.special. No es dañino, solo molesto/interesante.scipy.special número de importación

Cuando importo scipy usando import scipy as sp y luego tratar de acceder sp.special me sale:

>>> import scipy as sp 
>>> sp.special 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
AttributeError: 'module' object has no attribute 'special' 
>>> 

pero si a continuación, haga import scipy.special puedo acceder al módulo especial a través de scipy.special y 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'> 
>>> 

Así que ahora tengo el módulo special accesible a través de los espacios de nombres sp y scipy. Lo interesante es que puedo acceder al resto de scipy a través del espacio de nombres scipy.

Primera pregunta: ¿Por qué el módulo special no se importa la primera vez?

Segunda pregunta: ¿Cómo puedo obtener acceso al módulo special a través del espacio de nombre sp solamente, sin definir el espacio de nombre scipy?

Editar: usando Python 2.7.2 y 0.10.1 scipy

Respuesta

15

Por defecto, "scipy importación" no importa ningún subpaquete. Hay demasiados subpaquetes con módulos de extensión Fortran grandes que tardan en cargarse. No recomiendo hacer import scipy o abreviado import scipy as sp. Simplemente no es muy útil. Use from scipy import special, from scipy import linalg, etc.

+0

Gracias, lo tendré en cuenta en el futuro. ¿Hay algún lugar en los documentos que explícitamente declara esto? No puedo ver ese comentario en el documento [API] (http://docs.scipy.org/doc/scipy-0.10.1/reference/api.html) –

+1

Sé que es un comentario antiguo, pero es sigue siendo una pregunta frecuente, así que aquí hay un recurso: http://docs.scipy.org/doc/scipy/reference/api.html#guidelines-for-importing-functions-from-scipy –