使用bazel py_binary传递python命令行参数

问题描述

因此,我尝试将python和bazel结合使用,我想知道是否有一种方法可以在通过bazel目标运行该脚本时传递python脚本参数的值。

所以想法是:

我有一些main.py文件,它接受args并执行一些逻辑

#main.py
import argparse

class ClassA:
  def __init__(self,arg1):
    pass
  #incredible logic happens here :D 


def parse_arguments():
    parser = argparse.ArgumentParser(description="....")
    parser.add_argument(
        "--arg1",required=True)

if __name__ == "__main__":
    ARGS = parse_arguments()
    ClassA(ARGS.arg1) # will execute whatever has to happen and return something

通常,为了运行此脚本,我只需要运行以下内容:

python -m main.py --arg1=val1

但是现在我有兴趣在执行此脚本的同时为其设置目标,例如:

#BUILD 

py_binary( 
    name = "binary1",srcs = ["main.py"],main = "main.py",visibility = ["//public"],)

是否可以使用类似以下的方式运行该脚本: bazel run //path/to/py_binary --arg1=val1

如果不是,使用此bazel目标时运行该python脚本的替代方法是什么?

P.S。我正在使用Python 3.5 +

解决方法

您可以通过在要传递给二进制文件的命令行选项之前放置--来实现此目的,例如:

bazel run //pkg:binary1 -- --arg1=val1

bazel run -- //pkg:binary1 --arg1=val1

请参见https://docs.bazel.build/versions/master/user-manual.html#run

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...