如何在Bazel py_binary的args字段传递命名参数无需bazel build传入
解决方法
你可以直接在py_binary规则的args列表中追加--somearg相关的参数配置即可,args字段中定义的所有元素都会按顺序作为默认命令行参数,在你执行bazel run启动该二进制时自动传入,不需要在bazel build或bazel run命令中额外指定。
场景1:--somearg是需要传值的参数
如果该参数需要携带指定值,直接按--somearg=参数值的格式写入args列表即可,修改后的py_binary规则示例如下:
py_binary( name = "mock", srcs = ["mock.py"], args = [ "$(location @mockref//mockpackage)", "--somearg=你需要传入的参数值", ], data = [ "@mockref//:mockfile", ], deps = [ requirement("somerequirement"), ], )
场景2:--somearg是无值的开关参数
如果该参数是不需要传值的布尔类型开关,直接把参数名写入列表即可:
py_binary( name = "mock", srcs = ["mock.py"], args = [ "$(location @mockref//mockpackage)", "--somearg", ], data = [ "@mockref//:mockfile", ], deps = [ requirement("somerequirement"), ], )
注意:
args字段定义的参数仅在使用bazel run执行该目标时生效,如果你执行bazel build生成二进制文件后手动运行该文件,这些默认参数不会被自动携带,需要手动传入。
内容的提问来源于stack exchange,提问作者kartikeykant18
相关产品推荐
相关产品推荐

