Нет такой опции, выберите версию 6.6

#python #command-line-interface #python-click

#python #интерфейс командной строки #python-щелкните

Вопрос:

Используя http://click.pocoo.org/5 /

У меня определена эта команда, однако, когда я запускаю команду, пропущенный параметр передается правильно (я вижу значение), но я захожу Error: no such option: --missing в терминал, и команда завершается с ошибкой.

Что именно я здесь делаю не так? Из приведенного ниже кода была удалена некоторая информация, чтобы сделать его менее сложным, но логика та же.

 @cli.group()
def migrator():
    """Migrator from existing HEPData System to new Version"""


@migrator.command()
@with_appcontext
@click.option('--missing', is_flag=True, help='...')
@click.option('--start', '-s', type=int, default=None, help='...')
@click.option('--end', '-e', default=None, type=int, help='...')
@click.option('--date', '-d', type=str, default=None, help='...')
def migrate(start, end, missing, date=None):
    """
    Migrates all content...
    """
    if missing:
        ids = get_missing_records()
    else:
        ids = get_all_ids_in_current_system(date)

    print("Found {} ids to load.".format(len(ids)))
    if start is not None:
        _slice = slice(int(start), end)
        ids = ids[_slice]
        print("Sliced, going to load {} records.".format(len(ids)))

    print(ids)

    load_files(ids)
 

Ответ №1:

Я нашел проблему. Не было ничего общего с pocoo click. Это было потому get_missing_records() , что функция на самом деле является другой командой CLI. Впоследствии missing параметр передается и этой функции, и get_missing_records() метод, очевидно, ничего не знает об этом параметре. Итак, все решено.