3

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

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

我试图研究检查模块,但没有什么可做的。

4

2 回答 2

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__属性并不总是被定义,如果它被定义,它并不总是包含您正在寻找的信息。

于 2011-06-11T20:29:21.647 回答
0

使用__file__属性:

>>> import string
>>> string.__file__
'/usr/lib/python2.6/string.pyc'
于 2011-06-11T20:25:34.310 回答