如何获取导入某个包的python文件的路径?

如何获取导入某个包的python文件的路径?,python,module,Python,Module,有python文件a.py和b.py。而b.py是通过import b在a.py中导入的。 当a.py运行时,如何在b.py中获取a.py的绝对路径?b.py 导入操作系统 导入回溯 尝试:断言0 除: st=回溯。格式\u堆栈() #st-->[“文件名”的格式,第1行,在导入b\n'中,…] 相对_p=st[0]。拆分(',')[0]。拆分(“”)[-1]。拆分('”)[1] abs\u path=os.path.abspath(相对路径) 打印(abs\u路径) #打印导入器的路径,否则如

有python文件
a.py
b.py
。而
b.py
是通过
import b
a.py
中导入的。 当
a.py
运行时,如何在
b.py
中获取
a.py
的绝对路径?

b.py
导入操作系统
导入回溯
尝试:断言0
除:
st=回溯。格式\u堆栈()
#st-->[“文件名”的格式,第1行,在导入b\n'中,…]
相对_p=st[0]。拆分(',')[0]。拆分(“”)[-1]。拆分('”)[1]
abs\u path=os.path.abspath(相对路径)
打印(abs\u路径)
#打印导入器的路径,否则如果没有导入器,则打印其自身的abs路径
#程序的其余部分在这里。。。
b.py
导入操作系统
导入回溯
尝试:断言0
除:
st=回溯。格式\u堆栈()
#st-->[“文件名”的格式,第1行,在导入b\n'中,…]
相对_p=st[0]。拆分(',')[0]。拆分(“”)[-1]。拆分('”)[1]
abs\u path=os.path.abspath(相对路径)
打印(abs\u路径)
#打印导入器的路径,否则如果没有导入器,则打印其自身的abs路径
#程序的其余部分在这里。。。
import os
import traceback


try: assert 0
except:
    st = traceback.format_stack()
     # format of st --> ['  File "filename", line 1, in <module>\n    import b\n', ... ... ]
    relative_p = st[0].split(',')[0].split(' ')[-1].split('"')[1]
    abs_path = os.path.abspath(relative_p)
    print(abs_path)
    # prints the importer's path, else if no importer, then itself's abs path

# rest of program goes here ...