如果对象是模块的类或函数,我需要将绝对导入路径检索为字符串。例如:
>>> from a.b.c import foo
>>> get_import_path(foo)
'a.b.c.foo'
我试着查看检查模块,但没有什么可做的。
答案 0 :(得分:4)
你想要做的事情本质上是不可能的。 foo
根本不知道你是如何导入的 - 它甚至可能以多种不同的方式导入。我的Linux机箱上的示例:
>>> from os.path import normpath
>>> from posixpath import normpath as normpath2
>>> normpath is normpath2
True
因此normpath
和normpath2
是相同的函数对象。不可能推断出导入信息的方式。
尽管如此,有时可能会有助于查看函数的__module__
属性:
>>> normpath.__module__
posixpath
>>> normpath2.__module__
posixpath
__module__
属性并不总是被定义,如果定义了它,它并不总是包含您要查找的信息。
答案 1 :(得分:0)
使用__file__
属性:
>>> import string
>>> string.__file__
'/usr/lib/python2.6/string.pyc'