如何在被导入文件中找到导入者文件的名称?

5 投票
4 回答
1003 浏览
提问于 2025-04-15 14:29

我怎么才能找到在被导入的文件中,哪个文件是“导入者”?

比如说,如果 a.pyb.py 都导入了 c.py,那么 c.py 有没有办法知道是哪个文件在导入它呢?

4 个回答

2

这就是为什么你需要参数。

c.py 这个文件不需要知道是谁把它导入进来的。

而是 a.py 或者 b.py 需要把变量 __name__ 传递给 c.py 中的函数或类。

3

使用

sys.path[0]

这个命令会返回启动 Python 解释器时所用的脚本的路径。如果你直接运行这个脚本,它会返回这个脚本的路径。但如果这个脚本是从另一个脚本中导入的,它就会返回那个导入它的脚本的路径。

详细信息请查看 Python 路径问题

2

在c.py的最外层(也就是不在任何函数或类里面),你可以通过运行以下代码来获取你需要的信息:

import traceback

然后查看traceback.extract_stack()的结果。当你运行最外层的代码时,模块的导入者(还有它的导入者,等等,都是递归的)都会在调用栈上。

撰写回答