构造一个简单的CLI程序

typer

这个从去年就被各种营销号吹成Web框架的 第三方库, 与 FastAPI 同出一人之手,它不是Web框架,它是一个用来构建CLI程序的库,我们就简单搞个例子

# 更多用法,看文档
import typer # 实例一下
app = typer.Typer() # 加到命令组中 hello
@app.command()
def hello(name: str):
typer.echo(f"Hello {name}") # 加到命令组中 goodbye 接收 一个必要参数name, --formal 可修改默认值参数
@app.command()
def goodbye(name: str, formal: bool = False):
if formal:
typer.echo(f"Goodbye Ms. {name}. Have a good day.")
else:
typer.echo(f"Bye {name}!")

poetry

依赖环境和包管理器,个人觉得最大的亮点就是可以直接打包发布到PyPi上

pip install poetry 进行安装

# 常用命令
1. 在已有项目中初始化(图方便就一直回车): poetry init
2. 完全初始化一个项目: poetry new 项目名 # 上述内容 一路回车之后 得到一个pyproject.toml文件 3. 添加依赖库并安装: poetry add typer
... 其他命令 ... 各位自己翻文档吧

正片开始

  1. 新建一个目录 tclidemo

  2. poetry init 一路回车

  3. poetry add typer 安装typer

  4. 目录下新建一个同名的包(也可不同名)

  5. 里面新建一个main.py内容就是上面typer中的内容

  6. pyproject.toml添加[tool.poetry.scripts] 后如下

    [tool.poetry]
    # 这个name 必须和 我们要打包那个目录一个名称,且不能和pypi已有的包冲突
    name = "tclidemo"
    version = "0.1.4" # 包版本号 安装时 最好指定版本安装 pip install xx==0.1.2
    description = ""
    authors = ["zy7y <xxxxxxx@163.com>"] [tool.poetry.dependencies]
    python = "^3.9"
    typer = "^0.4.0" [tool.poetry.dev-dependencies] [build-system]
    requires = ["poetry-core>=1.0.0"]
    build-backend = "poetry.core.masonry.api" [tool.poetry.scripts]
    # 前面是命令 开头 , = 后面是 指定typer实例, 对应的就是 打包包名.模块名(main.py文件).typer对象名
    tdo = 'tclidemo.main:app'
  7. 打包&上传pypi

    PyPI · The Python Package Index

    # 执行后在当前目录下生成一个dist目录,poetry 和 npm 命令还差不多....
    poetry build (venv) E:\coding\tree-cli>poetry build
    Building tclidemo (0.1.4)
    - Building sdist
    - Built tclidemo-0.1.4.tar.gz
    - Building wheel
    - Built tclidemo-0.1.4-py3-none-any.whl # 上传
    poetry publish # 之后会要求输入 pypi 的账号密码(没有的先去注册 https://pypi.org/) (venv) E:\coding\tree-cli>poetry publish Username: zy7y
    Password:
    Publishing tclidemo (0.1.4) to PyPI
    - Uploading tclidemo-0.1.4-py3-none-any.whl 0%
    - Uploading tclidemo-0.1.4-py3-none-any.whl 100%
    - Uploading tclidemo-0.1.4-py3-none-any.whl 100%
    - Uploading tclidemo-0.1.4.tar.gz 0%
    - Uploading tclidemo-0.1.4.tar.gz 100%
    - Uploading tclidemo-0.1.4.tar.gz 100%

  8. 如果没报错,那就稳了,新起个虚拟环境 python -m venv venv

    # 安装上传的包 , 如果确实上传了装不上 最好等个一分钟哦
    pip install tclidemo==0.1.4 # 执行tdo --help
    tdo --help
    (venv) C:\Users\win10\Desktop\apiAutoTest>tdo --help
    Usage: tdo [OPTIONS] COMMAND [ARGS]... Options:
    --install-completion [bash|zsh|fish|powershell|pwsh]
    Install completion for the specified shell.
    --show-completion [bash|zsh|fish|powershell|pwsh]
    Show completion for the specified shell, to
    copy it or customize the installation. --help Show this message and exit. Commands:
    goodbye
    hello

最后

两个库官方文档如下,更多用法等你发掘。 可以试试 pip install tclidemo==0.1.4 哦

https://typer.tiangolo.com/		# typer
https://python-poetry.org/docs/ # poetry

参考文档:https://click-docs-zh-cn.readthedocs.io/zh/latest/setuptools.html

最新文章

  1. Sql Server中查询今天、昨天、本周、上周、本月、上月数据
  2. https适配
  3. Host基本概念
  4. HTML5 ---localStorage
  5. Windows Azure Cloud Service (44) 将Cloud Service加入Virtual Network Subnet,并固定Virtual IP Address(VIP)
  6. QTdebug时没有调试引擎
  7. java中this用法总结
  8. linux笔记:linux常用命令-帮助命令
  9. iOS 进阶 第十七天(0420)
  10. 先声明再定义的必要性 .xml
  11. ubuntu12.10+NDK r9 编译 ffmpeg 的一些参考资料Perhaps you should add the directory containing `libssl.pc&#39;
  12. RTB实时竞价广告是未来趋势
  13. 浅析Netty的异步事件驱动(二)
  14. 谈谈jconsole和jvisualvm
  15. C#学习笔记-DataTable导出到EXCEL(一)
  16. 【stm32开发之HAL采坑记之:001使用ST-LINK下载出错问题】
  17. WPF 引用 ttf文件
  18. 提升 PLSQL 开发性能漫谈
  19. java根据年月显示每周
  20. 第一部分:开发前的准备-第三章 Application 基本原理

热门文章

  1. PWA渐进式web应用
  2. 【源码】“@Value 注入不成功”引发的一系列骚操作
  3. ;~ 小部分AutoHotkey脚本源代码测试模板样板.ahk
  4. 15 道超经典大厂 Java 面试题!重中之重
  5. OpenFaaS实战之七:java11模板解析
  6. time_formatter writeup
  7. Upload-labs 文件上传靶场通关攻略(上)
  8. HCNA Routing&amp;Switching之STP选举规则
  9. Java时间类从此变得清晰明了
  10. Git-06-远程仓库