Я пытаюсь создать приложение командной строки с иерархическими командами (мои подкоманды будут иметь подкоманды). Однако, когда я пытаюсь выполнить простейшее приложение, я получаю AttributeError
.
Я могу воспроизвести это на простом примере.
Макет каталога:
.
├── cli.py
└── commands
├── config_cmds.py
├── __init__.py
cli.py
# -*- coding: utf-8 -*-
import sys
import click
from commands.config_cmds import configcmd
@click.group()
@click.version_option()
def cli(args=None):
"""A command line application"""
return 0
cli.add_command(configcmd)
if __name__ == "__main__":
sys.exit(cli()) # pragma: no cover
config_cmds.py
import click
@click.group
@click.version_option()
def configcmd():
"""Configuration management for this CLI"""
click.echo("In config")
Если я запускаю это приложение, я получаю следующую ошибку:
$ python cli.py
Traceback (most recent call last):
File "cli.py", line 15, in <module>
cli.add_command(configcmd)
File "/home/frank/.virtualenvs/clitest/lib/python3.6/site-packages/click/core.py", line 1221, in add_command
name = name or cmd.name
AttributeError: 'function' object has no attribute 'name'
Моя структура каталогов настроена на основе этого ответа.
Я использую Python 3.6 и Click версии 7.0.
Как устранить эту ошибку атрибута, чтобы иметь иерархию команд и разделять команды на несколько файлов?