如何在被导入文件中找到导入者文件的名称?
我怎么才能找到在被导入的文件中,哪个文件是“导入者”?
比如说,如果 a.py
和 b.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()的结果。当你运行最外层的代码时,模块的导入者(还有它的导入者,等等,都是递归的)都会在调用栈上。