es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Pasar argumentos con nombre en el campo “args” en un binario de Python (py_binary).

Considere que tengo un py_binary:

py_binary(
name = “mock”,
srcs = [“mock.py”],
args = [
“$(location @mockref//mockpackage)”,
],
data = [
“@mockref//:mockfile”,
],
deps = [
requirement(“somerequirement”),
],
)

Si mock.py acepta un argumento de línea de comandos llamado –somearg usando el analizador de argumentos, ¿cómo puedo pasar este argumento a través del campo args en el archivo de bazel sin pasar el argumento en el comando bazel build?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para pasar el argumento de línea de comandos --somearg al script mock.py a través del campo args en el archivo bazel, puedes agregar el separador -- seguido del argumento en el campo args. Por lo tanto, la regla py_binary modificada se vería así:

    py_binary(
        name = "mock",
        srcs = ["mock.py"],
        args = [
            "$(location @mockref//mockpackage)",
            "--",
            "--somearg=value"
        ],
        data = ["@mockref//:mockfile"],
        deps = [requirement("somerequirement")],
    )
    

    Aquí, hemos agregado -- seguido de la sintaxis del argumento real (--somearg=value) en el campo args. Esto le indica a bazel que pase estos argumentos al script mock.py cuando se ejecute.

    Ten en cuenta que el separador -- es necesario para distinguir los argumentos de línea de comandos de bazel de los argumentos que se pasan al script mock.py a través de args.

Comments are closed.