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

如何从另一个Python脚本中调用使用absl flags参数的Python文件

解决方案

有两种常用的实现方式,按需选择即可:

方案1:通过subprocess调用(无需修改script1,适配性最高)

不需要改动script1的原有代码,直接把生成的参数拼成命令执行即可:

import subprocess

# 此处为你在script2中已经生成的参数值
input1_val = "你生成的input1参数"
input2_val = "你生成的input2参数"

# 构造命令列表执行,避免字符串拼接的转义问题
run_cmd = [
    "python",
    "script1.py",
    "--input1", input1_val,
    "--input2", input2_val
]
# check=True表示script1运行出错时会直接抛出异常
subprocess.run(run_cmd, check=True)

如果需要捕获script1的运行输出,可在subprocess.run中添加capture_output=True参数。

方案2:直接导入script1模块调用

如果不想启动新进程,要在当前进程内直接调用script1逻辑,可以手动给absl的FLAGS赋值再调用入口:
首先确认script1的代码结构,标准absl脚本一般会把主逻辑抽成main函数:

# script1.py 示例结构
from absl import app
from absl import flags

FLAGS = flags.FLAGS
flags.DEFINE_string("input1", "", "参数1说明")
flags.DEFINE_string("input2", "", "参数2说明")

def main(argv):
    # 脚本主逻辑
    print(FLAGS.input1, FLAGS.input2)

if __name__ == "__main__":
    app.run(main)

对应在script2中按以下方式调用即可:

import sys
from absl import flags
from script1 import FLAGS, main

# 你生成的参数值
input1_val = "xxx"
input2_val = "yyy"

# 给FLAGS赋值
FLAGS.input1 = input1_val
FLAGS.input2 = input2_val
# 如果遇到flags已被解析的报错,可加下面这行
# FLAGS.unparse_flags()

# 调用script1的主函数,第一个参数为脚本名,任意填写即可
main([sys.argv[0]])

注意:如果script1没有把主逻辑抽成独立的main函数,而是直接写在if __name__ == "__main__"块里,这种方式无法直接使用,优先选方案1。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 03:24:01