基于python的CLI应用程序开发(第一节):简单了解一下Typer
创始人
2024-02-24 02:58:59

Typer开发(第一节):简单了解一下Typer

文章目录

  • Typer开发(第一节):简单了解一下Typer
    • 1. 简介
    • 2. 安装
    • 3. 在编辑器中使用Typer
    • 4. 简单应用1
    • 5. 简单应用2
    • 6. 命令参数
    • 7.其它

1. 简介

Typer 是一个python用于构建 CLI 应用程序的库,简单说就是开发控制台程序,开发简单。要求Python 3.6+, 它唯一的内部依赖是Click。

主要特点是:

  • 编写直观:强大的编辑器支持。处处圆满。更少的调试时间。旨在易于使用和学习。阅读文档的时间更少。
  • 易于使用:最终用户易于使用。所有 shell 的自动帮助和自动完成。
  • 简短:最小化代码重复。每个参数声明的多个功能。更少的错误。
  • 从简单开始:最简单的示例仅向您的应用程序添加 2 行代码:1 次导入,1 次函数调用。
  • 强大的扩展能力:随心所欲地增加复杂性,创建任意复杂的命令树和子命令组,带有选项和参数。
  • Typer CLI工具Typer CLI是一种运行Typer脚本的工具,可在您的终端中为您提供自动补全。

Typer文档链接:https://typer.tiangolo.com/

GitHub源码链接:https://github.com/tiangolo/typer

2. 安装

typer安装非常简单,只需要在命令行执行pip命令就可以,(对于需要安装虚拟环境的用户请自行解决)

$ pip install "typer[all]"
---> 100%
Successfully installed typer

在win下安装如下:
在这里插入图片描述

注意:使用pip install "typer[all]"命令安装,会自动将typer推荐的扩展库也安装下来,如上图:

我这个自动安装了Rich和commonmark。Rich 是一个 Python 库,用于将文本(带有颜色和样式)写入终端,并用于显示高级内容,例如表格、markdown 和语法高亮代码。CommonMark是一个强定义、高度兼容的 Markdown 规范。

虽然安装简单,但是我们还是有必要介绍一下安装的过程中都干了什么:

Typer 在内部使用Click。那是唯一的依赖。因此从原则上来说pip install typer[all]包含Click这个就够了。

但是它同时会选择安装一些附加的功能,来增强你的Typer 应用:

  1. rich: 格式化Typer显示,自动格式输出正确和错误,使输出具有颜色更加直观。
  2. shellingham:检测当前 Python 可执行文件在哪个 shell 中运行。
    • 有了shellingham你就可以使用--install-completion
    • 如果没有shellingham,您必须传递 shell 的名称才能完成安装,例如--install-completion bash

注意:当你在安装typer使用的是pip install typer[all] 那么rich和shellingham将会自动安装

3. 在编辑器中使用Typer

Typer的设计易于使用且直观,以确保最佳的开发体验。很多编辑器都支持Typer开发的自动补全功能。

您很少需要返回文档。以下是您的编辑可能会如何帮助您:

  • 在Visual Studio 代码中:
    在这里插入图片描述

  • 在PyCharm中:
    在这里插入图片描述

你会完成所有的事情。这是目前其他 CLI 库无法提供的。不再猜测那个变量是什么类型,如果它可以是None等等。

4. 简单应用1

下面我们就在编辑器中使用Typer:

创建一个文件main.py

# main.py
import typerdef main(name: str):print(f"Hello {name}")if __name__ == "__main__":typer.run(main)

命令行运行python main.py --help:

命令行运行python main.py XiaoMing:
在这里插入图片描述

5. 简单应用2

上面是最简单的例子。

现在让我们看一个稍微复杂一点的。带有两个子命令的示例:

修改文件main.py,创建一个typer.Typer()应用程序,并创建两个带有参数的子命令。

# main.pyimport typerapp = typer.Typer()@app.command()
def hello(name: str):print(f"Hello {name}")@app.command()
def goodbye(name: str, formal: bool = False):if formal:print(f"Goodbye Ms. {name}. Have a good day.")else:print(f"Bye {name}!")if __name__ == "__main__":app()
  • 明确创建一个typer.Typer应用程序(前一个typer.run实际上为您隐式创建了一个)。
  • 只要给函数加上@app.command()装饰器,那么这个函数就成为了一个命令。
  • 执行它app()本身,就好像它是一个函数(而不是typer.run)。

下面测试一下:

命令行运行python main.py --help:
在这里插入图片描述

命令行运行python main.py hello --help:
在这里插入图片描述

命令行运行python main.py goodbye --help:
在这里插入图片描述

命令行运行python main.py hello XiaoMing:

命令行运行python main.py goodbye XiaoMing:

命令行运行python main.py goodbye --formal Camila:
在这里插入图片描述

6. 命令参数

通过上面我们发现,对于命令行参数配置:

  1. 首先在创建命令函数的时候,要声明函数参数的类型,这对于python3.6+来说非常简单。
  2. 将参数类型(CLI 参数CLI 选项)声明为函数参数,就可以实现cmd的参数传递。
  3. 不必学习新的语法、特定库的方法或类等。

例如:

对于一个int

total: int

对于bool类型:

force: bool

文件路径枚举(选择)等也类似。后面我们会详细的介绍。

7.其它

Typer很强大,它还可以利用一些工具就可以创建子命令组、添加元数据、额外的验证等。这个后面会介绍。

它具有强大的编辑器支持,包括补全和类型检查。

当你的用户安装您的软件包或使用Typer CLI时,他们的终端(Bash、Zsh、Fish、PowerShell)将获得TAB自动补全功能;

有关包含更多功能的更完整示例,后面会有详细的介绍,同时请参阅教程 - 用户指南。

这篇只是一个简单的介绍,后面会持续更新。

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...