Tengo una carpeta de mensajes (paquete) con el archivo __init__.py
y otro módulo messages_en.py
dentro de él. En __init__.py
si importo messages_en
funciona, pero __import__
falla con "ImportError: Ningún módulo llamado messages_en"¿Cómo puedo importar un paquete usando __import __() cuando el nombre del paquete solo se conoce en tiempo de ejecución?
import messages_en # it works
messages = __import__('messages_en') # it doesn't ?
Yo solía pensar que 'importación x' es sólo otra forma de decir __import__('x')
1 y gracias por la explicación, pero ¿podría describir exactamente qué El ejemplo de OP no funciona? Parece que intenta aliar mensajes_en mensajes, lo que me parece (ingenuamente) razonable. –
Como 'wr' explicó que era debido al nivel, y sé que __import__ no debería usarse normalmente, pero en este caso tengo que leer dinámicamente el lenguaje de un archivo de configuración adjuntar a mensajes e importar ese archivo –
Este ejemplo fue muy útil, especialmente si intenta cargar módulos desde subdirectorios. Me ayudó a corregir el error "Atributo no encontrado". – Carlos