Найти - Пользователи
Полная версия: По объекту функции востановить путь импорта
Начало » Python для экспертов » По объекту функции востановить путь импорта
1
Evg
from pack.mod import f
#как имея теперь объект f восстановить путь откуда она была импортирована - т.е 'pack.mod' ?
bazooka
>>> from functools import wraps
>>> wraps.__module__
'functools'
Evg
thx
Evg
Если обращаться к wraps.__module__ из модуля где определена wraps. То там содержится строка “__main__” (а мне нужна ‘functools’) Те значение параметра wraps.__module__ зависит от той точки из которой идет обращение к параметру. Вопрос как получить реальный путь к модулю (относительно sys.path) даже из такой точки?

Нашел такой вариант
inspect.getmodule(wraps).__file__
тут получается путь к модулю из которого можно убирая путь из sys.path востановить путь импорта. Проще у кого-нибудь будут варианты?
Андрей Светлов
Evg, вы видите честное имя модуля - __main__.
import __main__ - тоже отработает нормально. Что вы хотите получить?
Evg
Вообщем проблема в том что мне нужно в определенный момент идентифицировать ф-ю, чтобы потом ее запустить. Так вот я использовал для идентификации ее положения путь импорта + имя функции, чтобы потом иметь возможность импортировать ее в другом месте,но похоже что это (путь импорта+имя) относительные вещи (относительно sys.path). Поэтому придется записывать полный путь к файлу и далее иницировать sys.path и делать просто импорт имени.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB