Avatar ·

Importação relativa em Python

📁 python, pergunta, ajuda

Desde algum tempo (quando a importação relativa foi descontinuada) não consigo resolver normalmente esta questão:

Suponha a estrutura do programa

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

Como carregar algo do pacote foo a partir do módulo handler.py?

O problema é que o nome do pacote foo é inicialmente desconhecido, pois estou carregando-o com importlib.

Até agora encontrei esta gambiarra: corto a variável __name__, que em handler.py é igual a 'foo.handler', ou seja, assim

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

e depois carrego o módulo necessário

needle_module = importlib.import_module('.' + <nome_do_módulo>, foo_name)

mas, como