Python 3.x 如何在python中导入模块后获取其完整名称空间

Python 3.x 如何在python中导入模块后获取其完整名称空间,python-3.x,Python 3.x,我想要上面的代码片段打印“foo.bar.bar” 如何在python3中执行此操作?每个导入的模块都列在sys.modules中。因此,您可以遍历sys.modules,以找到与模块关联的路径: from foo.bar import bar print(get_namespace(bar)) 由于单词名称空间是为保留的,因此我将函数get\u module\u name重命名为bar函数还是子模块? import sys def get_module_name(mod): fo

我想要上面的代码片段打印“foo.bar.bar”


如何在python3中执行此操作?

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

from foo.bar import bar

print(get_namespace(bar))


由于单词
名称空间
是为保留的,因此我将函数
get\u module\u name

重命名为
bar
函数还是子模块?
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