Typer 是 FastAPI 的小兄弟,
它是命令行程序界的 FastAPI。
同样的设计哲学——类型注解驱动、自动文档、极简 API——从 Web API 延伸到了终端命令行。
六大核心特性,让 CLI 开发从繁琐走向愉悦。
出色的编辑器支持,到处都有补全。减少调试时间,专为易用、易学而设计。少花时间阅读文档。
对最终用户来说非常易用。自动生成帮助信息,为所有 Shell 提供自动补全。
最大限度减少代码重复。每个参数声明即可获得多项功能,更少 Bug。
最简单的示例只需增加 2 行代码:
1 个 import + 1 次函数调用
任意扩展复杂度,创建复杂的命令树和子命令组,支持选项和参数。
内置 typer 命令,可用于运行脚本,自动将其转换成 CLI 程序——即便脚本内部并未使用 Typer。
创建并激活一个虚拟环境,然后安装 Typer。仅依赖少量小型库。
只需标准的 Python 类型注解,Typer 会处理剩下的一切。
创建 main.py,内容如下。这个脚本内部甚至没有使用 Typer。
你可以用 typer 命令把它当作 CLI 程序来运行。
将 main.py 更新为以下内容,直接用 Python 运行。
现在你可以直接运行它,同样获得帮助信息和类型检查。
创建一个 Typer 应用,添加两个子命令,自动获得 --help 和 Shell 补全。
显式创建 typer.Typer 应用,用 @app.command() 添加子命令。
注意:如果你的程序只有一个命令,默认情况下命令名在用法中会被省略:python main.py Camila。但当存在多个命令时,你必须显式地写上命令名:python main.py hello Camila。
你只需声明一次参数的类型——CLI 参数和 CLI 选项——将其作为函数参数即可。使用的是标准的现代 Python 类型,不需要学习新的语法、某个特定库的方法或类。
total: int
force: bool
path: Path
mode: Enum
同理也适用于文件、路径、枚举(选项)等,还提供了创建子命令组、添加元数据、额外校验等工具。
出色的编辑器支持,包括无处不在的补全和类型检查。
安装你的包或使用 typer 命令时,终端(Bash、Zsh、Fish、PowerShell)中的自动 --help 帮助信息和自动补全。
Typer 仅需要少量依赖(大多数都很小),保持你的项目干净。
rich.readthedocs.io
用于自动显示格式美观的错误信息。
github.com/sarugaku/shellingham
用于在安装补全时自动检测当前 Shell。
github.com/fastapi/annotated-doc
用于从 Python 类型注解生成文档。
github.com/tartley/colorama
用于在 Windows 上生成彩色终端文本。
Typer 过去依赖 Click。自 0.26.0 起,Typer 已将 Click 内置(vendored),统一了交互方式,便于未来维护。部分 Click 功能未来将不再可用。
曾经有一个精简版 typer-slim。自 0.22.0 起已停止支持,现在只是安装完整的 Typer。如需全局禁用 Rich,设置 TYPER_USE_RICH=False。