Avatar ·

Importación relativa en Python

📁 python, pregunta, ayuda

Desde hace algún tiempo (desde que se eliminó la importación relativa) no puedo resolver normalmente esta cuestión:

Supongamos la estructura del programa

app/    __init__.py    foo/        __init__.py        handler.py

¿Cómo cargar algo desde el módulo handler.py desde el paquete foo?

El problema es que inicialmente el nombre del paquete foo es desconocido, lo cargo usando importlib.

Por ahora encontré este workaround: recorto la variable __name__, que en handler.py es igual a 'foo.handler', es decir, así

foo_name = __name__.rsplit('.', 1)[0]

y luego cargo el módulo que necesito

needle_module = importlib.import_module('.' + <nombre del módulo>, foo_name)

pero, como