Avatar ·

Importações relativas em Python

📁 python, pergunta, ajuda

Por algum tempo (já que importações relativas foram canceladas) não consigo resolver normalmente a seguinte questão:

Suponha, a estrutura do programa

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

como do módulo handler.py carregar algo do pacote foo ?

A questão é que o nome do pacote foo é desconhecido, eu o carrego com importlib .

Enquanto isso, encontrei uma gambiarra: eu corto a variável __name__ , que em handler.py é igual a 'foo.handler' , ou seja, assim

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

e então carrego o módulo que preciso

  need_module = importlib.import_module(foo_name + '.need_module')