#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)
но, как-то, не кошерно это...
Ответы
Ответ 1
Я вот смотрю на вашу схему и вижу в ней что и сам хендлер ваш в этом же пакете, так спрашивается зачем мучатся когда достаточно имя файла написать?? собственно видел такое mod=__import__("attr") где attr имя файла attr.pyОтвет 2
Может добавить путь в sys.path?Ответ 3
In handler.py: from ..module import function
Комментариев нет:
Отправить комментарий