使用 bazel py_binary 传递 python 命令行参数
Passing python command line arguments using bazel py_binary
所以我试图结合使用 python 和 bazel 在一起,我想知道是否有一种方法可以在 运行 时传递 python 脚本参数的值通过 bazel 目标编写脚本。
所以想法是:
我有一些 main.py
文件接受参数并执行一些逻辑
#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
但现在我有兴趣执行这个脚本,同时有一个 bazel 目标,比如:
#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
所以我试图结合使用 python 和 bazel 在一起,我想知道是否有一种方法可以在 运行 时传递 python 脚本参数的值通过 bazel 目标编写脚本。
所以想法是:
我有一些 main.py
文件接受参数并执行一些逻辑
#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
但现在我有兴趣执行这个脚本,同时有一个 bazel 目标,比如:
#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