检查来自对象的导入路径字符串

时间:2011-06-11 20:22:27

标签: python import inspect

如果对象是模块的类或函数,我需要将绝对导入路径检索为字符串。例如:

>>> from a.b.c import foo
>>> get_import_path(foo)
'a.b.c.foo'

我试着查看检查模块,但没有什么可做的。

2 个答案:

答案 0 :(得分:4)

你想要做的事情本质上是不可能的。 foo根本不知道你是如何导入的 - 它甚至可能以多种不同的方式导入。我的Linux机箱上的示例:

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

因此normpathnormpath2是相同的函数对象。不可能推断出导入信息的方式。

尽管如此,有时可能会有助于查看函数的__module__属性:

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

__module__属性并不总是被定义,如果定义了它,它并不总是包含您要查找的信息。

答案 1 :(得分:0)

使用__file__属性:

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