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.

No se puede registrar el comando de grupo.

Estoy tratando de ejecutar un cli de click a través de un bash con grupos de comandos diferentes ejecutados mediante una sola colección de comandos.

import click

@click.group()
def run_preprocessing_extract_data():
    pass

@run_preprocessing_extract_data.command()
@click.option(
    "--start_date",
    type=click.DateTime(formats=["%Y-%m-%d"]),
    required=True,
    help="Fecha de inicio para el pipeline",
)
@click.option(
    "--end_date",
    type=click.DateTime(formats=["%Y-%m-%d"]),
    required=True,
    help="Fecha de fin para el pipeline",
)
def main(start_date, end_date):
    ...

if __name__ == "__main__":
    main()
from click import CommandCollection
from src.preprocessing_extract_data.scripts.main import run_preprocessing_extract_data

if __name__ == "__main__":
    cmds = [
        run_preprocessing_extract_data,
        # unos cuantos grupos de comandos similares más
    ]
    cli = CommandCollection(sources=cmds)
    cli()
#!/bin/sh

start_date="$1"
end_date="$2"

python src/scripts/main.py run_preprocessing_extract_data --start_date=$start_date --end_date=$end_date

Ejecuto el siguiente comando ./scripts/entrypoint.sh --start_date="2020-11-01" --end_date="2021-12-01" --today="2021-12-10", pero sigue fallando y arroja el siguiente error:

Usage: main.py [OPTIONS] COMMAND [ARGS]…
Try ‘main.py –help’ for help.
Error: No such command ‘run_preprocessing_extract_data’.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    El error está ocurriendo porque el comando “run_preprocessing_extract_data” es parte del grupo click, pero no se está pasando como argumento al script main.py. En cambio, el script está intentando ejecutarlo como un comando separado.

    Para solucionar esto, modifica el script entrypoint.sh para pasar la colección de comandos como argumento al script main.py, de esta manera:

    #!/bin/sh
    start_date="$1"
    end_date="$2"
    
    python src/scripts/main.py run_preprocessing_extract_data --start_date=$start_date --end_date=$end_date 
    

    debe convertirse en:

    #!/bin/sh
    start_date="$1"
    end_date="$2"
    
    python src/scripts/main.py --start_date=$start_date --end_date=$end_date run_preprocessing_extract_data
    

    Con este cambio, el script main.py debería analizar correctamente los argumentos de entrada y ejecutar el grupo de comandos “run_preprocessing_extract_data”.

Comments are closed.