Уведомления

Группа в Telegram: @pythonsu

#1 Март 8, 2010 21:42:41

Evg
От:
Зарегистрирован: 2008-12-25
Сообщения: 346
Репутация: +  -1  -
Профиль   Отправить e-mail  

По объекту функции востановить путь импорта

from pack.mod import f
#как имея теперь объект f восстановить путь откуда она была импортирована - т.е 'pack.mod' ?



Офлайн

#2 Март 8, 2010 22:21:35

bazooka
От:
Зарегистрирован: 2009-04-12
Сообщения: 165
Репутация: +  0  -
Профиль   Отправить e-mail  

По объекту функции востановить путь импорта

>>> from functools import wraps
>>> wraps.__module__
'functools'



Офлайн

#3 Март 8, 2010 22:24:24

Evg
От:
Зарегистрирован: 2008-12-25
Сообщения: 346
Репутация: +  -1  -
Профиль   Отправить e-mail  

По объекту функции востановить путь импорта

thx



Офлайн

#4 Март 10, 2010 19:42:14

Evg
От:
Зарегистрирован: 2008-12-25
Сообщения: 346
Репутация: +  -1  -
Профиль   Отправить e-mail  

По объекту функции востановить путь импорта

Если обращаться к wraps.__module__ из модуля где определена wraps. То там содержится строка “__main__” (а мне нужна ‘functools’) Те значение параметра wraps.__module__ зависит от той точки из которой идет обращение к параметру. Вопрос как получить реальный путь к модулю (относительно sys.path) даже из такой точки?

Нашел такой вариант

inspect.getmodule(wraps).__file__
тут получается путь к модулю из которого можно убирая путь из sys.path востановить путь импорта. Проще у кого-нибудь будут варианты?



Отредактировано (Март 10, 2010 20:01:12)

Офлайн

#5 Март 11, 2010 10:10:39

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

По объекту функции востановить путь импорта

Evg, вы видите честное имя модуля - __main__.
import __main__ - тоже отработает нормально. Что вы хотите получить?



Офлайн

#6 Март 11, 2010 12:38:02

Evg
От:
Зарегистрирован: 2008-12-25
Сообщения: 346
Репутация: +  -1  -
Профиль   Отправить e-mail  

По объекту функции востановить путь импорта

Вообщем проблема в том что мне нужно в определенный момент идентифицировать ф-ю, чтобы потом ее запустить. Так вот я использовал для идентификации ее положения путь импорта + имя функции, чтобы потом иметь возможность импортировать ее в другом месте,но похоже что это (путь импорта+имя) относительные вещи (относительно sys.path). Поэтому придется записывать полный путь к файлу и далее иницировать sys.path и делать просто импорт имени.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version