如何在python中导入模块后获取模块的完整命名空间

时间:2014-06-27 19:05:49

标签: python-3.x

from foo.bar import bar

print(get_namespace(bar))

我希望上面的代码段打印" foo.bar.bar"

如何在python3中完成?

1 个答案:

答案 0 :(得分:2)

每个导入的模块都列在sys.modules中。因此,您可以遍历sys.modules以查找与模块关联的路径:

import sys
def get_module_name(mod):
    for path, module in sys.modules.items():
        if mod == module:
            return path
    raise ValueError('module not found')


from foo.bar import bar
print(get_module_name(bar))
# foo.bar.bar

由于单词namespace是为a different concept保留的,我已重命名为get_module_name