关于 python-cli
这项技能介绍如何用 Click 组织 Python 命令行应用,适合构建由可组合命令组和控制台脚本入口组成的 CLI。
主要功能
- 01组合式 Click 子命令组
- 02在根命令组中显式注册
- 03统一设置 -h 和 --help
- 04配置 pyproject.toml 控制台脚本
- 05CLI 变更后更新 README
适用场景
- 01按命令模块组织 Python CLI
- 02向 Click 根组添加子命令
- 03将 CLI 接入控制台脚本
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ brojonat/ llmsrules --skill python-cli安装后在 Claude Code 中输入/python-cli确认已加载。
详细介绍
使用 Click 构建 Python 命令行界面
使用 Click 通过可组合的子命令组来构建 Python 命令行界面。
项目结构
.
├── pyproject.toml # console_script points to `your_package.cli:main`
└── your_package/
├── __init__.py
├── cli.py # root Click group; imports and registers subcommands
├── foo/
│ ├── __init__.py
│ └── commands.py # exposes a Click group named `cli`
└── bar/
├── __init__.py
└── commands.py # exposes a Click group named `cli`
根命令行入口点
import click
from .foo.commands import cli as foo
from .bar.commands import cli as bar
CONTEXT_SETTINGS = {"help_option_names": ["-h", "--help"]}
@click.group(context_settings=CONTEXT_SETTINGS)
def cli() -> None:
"""Project command line interface."""
pass
@cli.command()
@click.option("--name", "-n", default="world", help="Who to greet.")
def hello(name: str) -> None:
"""Example subcommand."""
click.echo(f"Hello, {name}!")
def main() -> None:
cli()
# Register imported subcommand groups with explicit names
cli.add_command(foo, name="foo")
cli.add_command(bar, name="bar")
if __name__ == "__main__":
main()
子命令模块(foo/commands.py)
import click
@click.group()
def cli() -> None:
"""Foo subcommands."""
pass
@cli.command()
@click.argument("item")
def process(item: str) -> None:
"""Process a single item."""
click.echo(f"Processing: {item}")
pyproject.toml 入口点
[project.scripts]
my-tool = "your_package.cli:main"
关键模式
- 每个模块使用一个组:每个子命令目录都导出一个名为
cli的 Click 组 - 显式注册:在根命令行界面中使用
cli.add_command(group, name="name") - 上下文设置:始终设置
help_option_names = ["-h", "--help"] - 控制台脚本:在
pyproject.toml中配置入口点,以便执行uv pip install -e .
维护事项
修改命令行界面后,请更新相邻的 README.md,以反映当前的命令列表。
评论
支持 Markdown