аватар question@mail.ru · 01.01.1970 03:00

Относительный импорт в Python

С некоторых пор (как отменили относительный импорт) не могу нормально решить такой вопрос:

Предположим, структура программы

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

Как из модуля handler.py загрузить что-либо из пакета foo?

Всё дело в том, что изначально имя пакета foo неизвестно, загружаю я его с помощью importlib.

Пока я нашёл такой костыль: обрезаю переменную __name__, которая в handler.py равна 'foo.handler', т.е. так

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

а потом загружаю необходимый мне модуль

needle_module = importlib.import_module('.' + <имя модуля>, foo_name)

но, как-то, не кошерно это...

аватар answer@mail.ru · 01.01.1970 03:00

Я вот смотрю на вашу схему и вижу в ней что и сам хендлер ваш в этом же пакете, так спрашивается зачем мучатся когда достаточно имя файла написать??

собственно видел такое

mod=__import__(""attr"")

где attr имя файла attr.py

Последние

Похожие