Осмотреть строку пути импорта от объекта

Если объект является классом или функцией модуля, мне нужно получить абсолютный путь импорта в виде строки. Пример:

>>> from abc import foo >>> get_import_path(foo) 'abcfoo' 

Я попытался изучить модуль проверки, но нечего делать.

То, что вы пытаетесь сделать, по своей сути невозможно. foo просто не знает, как вы его импортировали, возможно, даже импортировалось несколькими способами. Пример в моем ящике Linux:

 >>> from os.path import normpath >>> from posixpath import normpath as normpath2 >>> normpath is normpath2 True 

Таким образом, normpath и normpath2 являются normpath и тем же функциональным объектом. Невозможно вывести информацию о том, каким образом они были импортированы.

Тем не менее, иногда это может помочь найти атрибут __module__ вашей функции:

 >>> normpath.__module__ posixpath >>> normpath2.__module__ posixpath 

__module__ не всегда определен, и если он определен, он не всегда содержит информацию, которую вы ищете.

Используйте атрибут __file__ :

 >>> import string >>> string.__file__ '/usr/lib/python2.6/string.pyc'