Typer 命令帮助里怎么写 Rich Markdown 和 Markup 富文本

发布时间:2026/9/14 8:40:57
Typer 命令帮助里怎么写 Rich Markdown 和 Markup 富文本 Typer 命令帮助里怎么写 Rich Markdown 和 Markup 富文本【免费下载链接】typerTyper, build great CLIs. Easy to code. Based on Python type hints.项目地址: https://gitcode.com/GitHub_Trending/ty/typer当你用 Typer 给 CLI 写--help时docstring 和参数帮助里全是纯文本没法加粗、着色或排版。Typer 内置了 Rich 渲染通过typer.Typer()的rich_markup_mode参数可以在命令帮助里写两种富文本Rich Console Markup默认rich_markup_moderich和Markdownrich_markup_modemarkdown作用范围覆盖命令 docstring、CLI argument和CLI option的help以及app.command()的help参数和epilog。本文按“写代码 → 运行--help→ 核对渲染结果”的路径走一遍资料来自 docs/tutorial/commands/help.md 和 docs/tutorial/install.md。准备条件安装 Typer 并确认 Rich 可用Rich 是 Typer 的依赖之一用来展示格式化的错误和帮助。默认安装即包含 Richdocs/index.md 中 Dependencies 一节列出了rich。按 docs/tutorial/install.md 的步骤准备项目$ uv init awesome-project --bare $ cd awesome-project $ uv add typeruv add typer会创建.venv、把 Typer 写入pyproject.toml并生成uv.lock。文档明确说明默认安装的typer带rich和shellingham。后续运行统一用uv run python main.py ...。rich_markup_mode参数是 0.6.0 版本引入的docs/release-notes.md 中 0.6.0 条目记录了typer.Typer(rich_markup_modemarkdown)和typer.Typer(rich_markup_moderich)两个取值。主路径一Rich Console Markup默认模式在创建typer.Typer()应用时设置rich_markup_moderich文档注明这就是默认值即可在 docstring 和CLI arguments、CLI options的 help 里使用 Rich Console Markup。下面是文档中的完整示例docs_src/commands/help/tutorial004_an_py310.pyfrom typing import Annotated import typer app typer.Typer(rich_markup_moderich) app.command() def create( username: Annotated[ str, typer.Argument(helpThe username to be [green]created[/green]) ], ): [bold green]Create[/bold green] a new [italic]shiny[/italic] user. :sparkles: This requires a [underline]username[/underline]. print(fCreating user: {username}) app.command(help[bold red]Delete[/bold red] a user with [italic]username[/italic].) def delete( username: Annotated[ str, typer.Argument(helpThe username to be [red]deleted[/red]) ], force: Annotated[ bool, typer.Option(helpForce the [bold red]deletion[/bold red] :boom:) ] False, ): Some internal utility function to delete. print(fDeleting user: {username}) if __name__ __main__: app()Markup 写法覆盖文档展示的全部位置命令 docstring[bold green]Create[/bold green]、[italic]shiny[/italic]、[underline]username[/underline]以及 emoji:sparkles:CLI argument的helptyper.Argument(helpThe username to be [green]created[/green])CLI option的helptyper.Option(helpForce the [bold red]deletion[/bold red] :boom:)用app.command(help...)覆盖的命令帮助同样支持 Markup。验证 Rich Markup 渲染运行并检查create命令的帮助下面是文档示例输出实际终端中 Create 为绿色加粗、shiny 为斜体、created 为绿色$ uv run python main.py create --help Usage: main.py create [OPTIONS] {username} Create a new shiny user. ✨ This requires a username. Arguments: * username str The username to be created [required] Options: --help Show this message and exit.再看delete命令确认app.command(help...)、argument 和 option 的 Markup 同时生效$ uv run python main.py delete --help Usage: main.py delete [OPTIONS] {username} Delete a user with username. Arguments: * username str The username to be deleted [required] Options: --force / --no-force Force the deletion [default: no-force] --help Show this message and exit.如果--help输出里能看到加粗、斜体、颜色和 emoji说明 Markup 解析成功若看到的是原始方括号文本先检查rich_markup_mode是否被设置成了None见文末“关闭富文本渲染”。主路径二Markdown 模式把应用改为rich_markup_modemarkdown后docstring 里改用 Markdown 语法**Create**加粗、*shiny*斜体、* 列表项无序列表、---分隔线、文本超链接。文档示例代码见 docs_src/commands/help/tutorial005_an_py310.pyfrom typing import Annotated import typer app typer.Typer(rich_markup_modemarkdown) app.command() def create( username: Annotated[str, typer.Argument(helpThe username to be **created**)], ): **Create** a new *shiny* user. :sparkles: * Create a username * Show that the username is created --- Learn more at the [Typer docs website](https://typer.tiangolo.com) print(fCreating user: {username}) app.command(help**Delete** a user with *username*.) def delete( username: Annotated[str, typer.Argument(helpThe username to be **deleted**)], force: Annotated[bool, typer.Option(helpForce the **deletion** :boom:)] False, ): Some internal utility function to delete. print(fDeleting user: {username}) if __name__ __main__: app()运行uv run python main.py create --help文档示例输出为Usage: main.py create [OPTIONS] {username} Create a new shiny user. ✨ • Create a username • Show that the username is created ─────────────────────────────────────────────────────────────────── Learn more at the Typer docs website Arguments: * username str The username to be created [required] Options: --help Show this message and exit.delete命令的输出结构与 Rich 模式一致只是加粗改用 Markdown 的**...**实现。Markdown 与 Rich Markup 的关键差异文档明确提示Markdown 模式不能定义颜色需要颜色的场景应改用 Rich Markuprich_markup_moderich。也就是说两种模式二选一由typer.Typer()构造参数决定不能在同一应用里混用两套语法。可选epilog 里写富文本命令帮助还支持epilog帮助末尾的附加段落同样受rich_markup_mode控制。文档示例docs_src/commands/help/tutorial008_py310.pyimport typer app typer.Typer(rich_markup_moderich) app.command(epilogMade with :heart: in [blue]Venus[/blue]) def create(username: str): [green]Create[/green] a new user. :sparkles: print(fCreating user: {username}) if __name__ __main__: app()运行uv run python main.py --help帮助末尾会显示文档示例中的 “Made with ❤ in Venus”Venus 为蓝色。关闭富文本渲染如果希望帮助保持纯文本文档给出两个级别单个应用把rich_markup_mode设为None全局设置环境变量TYPER_USE_RICH为False或0docs/index.md 也有相同说明。验证方式不变设置后运行uv run python main.py --help确认输出中不再出现加粗、颜色且[bold green]这类标记不会被解析渲染。限制颜色只能在 Rich Markup 模式下使用Markdown 模式只负责排版加粗、斜体、列表、分隔线、链接文档未提供在 Markdown 模式下着色的途径。rich_markup_mode在创建typer.Typer()应用时一次性指定决定整个应用的解析语法。本文的渲染输出均取自 docs/tutorial/commands/help.md 的文档示例不同终端对 Rich 面板样式的呈现可能不同但加粗/斜体/颜色/emoji 的解析效果与文档示例一致即可视为配置正确。【免费下载链接】typerTyper, build great CLIs. Easy to code. Based on Python type hints.项目地址: https://gitcode.com/GitHub_Trending/ty/typer创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询