Si encuentras algo que te causa duda puedes dejarlo en la sección de comentarios y te responderemos tan rápido como podamos.
Solución:
Utilizando import module as name
lo hace no crea un alias. Entendiste mal el sistema de importación.
La importación hace dos cosas:
- Cargue el módulo en la memoria y almacene el resultado en
sys.modules
. Esto esta hecho una vez solo; las importaciones posteriores reutilizan el objeto de módulo ya cargado. - Enlaza uno o más nombres en tu espacio de nombres actual.
El as name
la sintaxis le permite controlar el nombre en el último paso.
Para el from module import name
sintaxis, todavía necesita nombrar el módulo completo, como module
se busca en sys.modules
. Si realmente desea tener un alias para esto, tendrá que agregar referencias adicionales allí:
import numpy # loads sys.modules['numpy']
import sys
sys.modules['np'] = numpy # creates another reference
Sin embargo, hacerlo puede tener efectos secundarios cuando también está importando submódulos. En términos generales, no desea crear alias para paquetes hurgando en sys.modules
sin crear también alias para todos los submódulos (posibles), ya que no hacerlo puede hacer que Python vuelva a importar submódulos como espacios de nombres separados.
En este caso específico, importando numpy
también desencadena la carga de numpy.linalg
, así que todo lo que tienes que hacer es:
import numpy as np
# np.linalg now is available
No se necesita ningún alias de módulo. Para los paquetes que no importan submódulos automáticamente, tendrías que usar:
import package as alias
import package.submodule
y alias.submodule
está disponible de todos modos, porque un submódulo siempre se agrega como un attribute en el paquete principal.
Te mostramos comentarios y calificaciones
Si entiendes que te ha sido de ayuda nuestro post, sería de mucha ayuda si lo compartieras con más desarrolladores y nos ayudes a dar difusión a esta información.