from foo.bar import bar
print(get_namespace(bar))
我希望上面的代码段打印" foo.bar.bar"
如何在python3中完成?
答案 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
。