You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python被调用脚本中识别并打印发起调用的源脚本名称?

获取Python调用链的源头脚本名称

Python没有专门的内置函数直接返回调用链最顶端的源头脚本,但可以通过sys和inspect模块组合实现。

核心思路

调用栈的最底部就是最初启动的脚本,我们可以通过遍历调用栈定位它;如果遍历出现异常,sys.argv[0]可作为备选方案——直接执行脚本时,它就是启动脚本的路径。

实现代码(z.py中)

import sys
import inspect
import os

def get_root_script():
    # 从调用栈最底层(最早的调用)开始遍历
    for frame_info in reversed(inspect.stack()):
        filename = frame_info.filename
        # 排除交互式环境、字节码文件等非用户脚本
        if filename != '<stdin>' and not filename.endswith('.pyc') and '__pycache__' not in filename:
            return filename
    # 兜底返回启动脚本路径
    return sys.argv[0]

# 打印完整路径
print(get_root_script())
# 仅打印文件名
print(os.path.basename(get_root_script()))

测试场景

  • x.py代码:import y
  • y.py代码:import z
  • 执行python x.py,z.py会输出x.py(或完整路径,取决于执行目录)

注意事项

  • 如果在交互式Python环境(如命令行)运行,该方法会返回<stdin>,需根据场景自行判断处理。
  • 对于pyinstaller等工具打包后的脚本,可能需要额外适配,但普通脚本场景完全适用。

内容的提问来源于stack exchange,提问作者LearningCpp

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 23:05:21