Python нажмите несколько команд — как создать cli для нескольких команд установленной утилиты

Описание: пользователю нужно будет установить мою утилиту и запустить из нее две разные команды: command_1 и command_2.

для этого в setup.py я использовал такой синтаксис:

    entry_points={
        'console_scripts': [
            'command_1 = src.cli:function_command_1',
            'command_2 = src.cli:function_command_2',
        ]

после выполнения пользователем: pip install my_module он может использовать две отдельные команды в командной строке;

например, пользователь может запустить:

command_1 --parameter_1='p1' --parameter_2='p2'

Проблема:

Что, если мой модуль выполняет несколько команд, а не одну? Например:

my_module command_1 --parameter_1='p1' --parameter_2='p2'
my_module command_2 --parameter_1='p3' --parameter_2='p4'
...
my_module command_15 --parameter_1='p15'

Существует решение использовать click для разных одиночных команд для приложения: Как я могу разделить мои команды Click, каждая с набором подкоманд, на несколько файлов?

у кого-нибудь была подобная проблема, если нет, что посоветуете?

Спасибо всем заранее


person Pulia Zlaya    schedule 20.04.2021    source источник
comment
Есть ли причина, по которой вы не хотите использовать Click? Typer — еще один вариант, который может быть еще проще в использовании. У вас есть требование не использовать внешние пакеты?   -  person daviewales    schedule 20.04.2021
comment
Если вы хотите сделать это с помощью стандартной библиотеки, используйте argparse. Вот несколько связанных вопросов, похожих на то, что вы пытаетесь сделать: argparse-with-required-subcommands get-selected-subcommand-with-argparse   -  person daviewales    schedule 20.04.2021
comment
Typer использует Click внутренне, но я не вижу особых преимуществ от Typer, по крайней мере, я не нашел то, что хотел.   -  person Pulia Zlaya    schedule 23.04.2021
comment
Не могли бы вы подробнее рассказать о ваших требованиях? Судя по вашему вопросу, вам нужен скрипт с двумя подкомандами. Не могли бы вы объяснить, почему этот пример не то, что вам нужно?   -  person daviewales    schedule 25.04.2021
comment
@daviewales, я хочу иметь утилиту с несколькими одинаковыми командами: -$ имя_утилиты command_1 --par1='asd' --par2='asd'   -  person Pulia Zlaya    schedule 28.04.2021
comment
Собственно, это то, что мне было нужно: stackoverflow.com/questions/54087479/   -  person Pulia Zlaya    schedule 07.05.2021


Ответы (1)


Я обнаружил, что argparse делает это: https://stackoverflow.com/a/28908244/5945646

Клик не обеспечивает эту функциональность напрямую

ОБНОВИТЬ:

На самом деле это так: вам нужно использовать группы щелчков и указать консольную команду в setup.py для файла с командой щелчка, и после установки у вас будет команда модуля и подкоманды -

Как установить запись point для консольного скрипта с несколькими группами команд для Python Click?

person Pulia Zlaya    schedule 07.05.2021