构造一个简单的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

快速构建CLI程序并发布到PyPi的更多相关文章

  1. 使用SpringBoot快速构建应用程序

    1.Spring MVC和Spring Boot自带的web构建方式有所区别.Spring提供了spring-boot-starter-web自动配置模块. 2. 添加如下依赖 <depende ...

  2. 5分钟快速构建苹果IPA免费发布服务器

    在ios的开发中, 通过苹果的各种秘钥加密, 我们会生成一个.ipa文件,这就是我们的应用软件的安装包. 这个文件是能被安装到iphone/ipad上的.可是,如何才能让不在身边的人安装上这个应用呢? ...

  3. Apache Commons CLI官方文档翻译 —— 快速构建命令行启动模式

    昨天通过几个小程序以及Hangout源码学习了CLI的基本使用,今天就来尝试翻译一下CLI的官方使用手册. 下面将会通过几个部分简单的介绍CLI在应用中的使用场景. 昨天已经联系过几个基本的命令行参数 ...

  4. 快速构建Windows 8风格应用3-打包发布应用

    原文:快速构建Windows 8风格应用3-打包发布应用 本篇博文主要介绍如何打包应用程序,成功后如何部署应用程序,最后介绍如何发布应用程序到应用商店中. 如何打包Windows 8风格应用程序呢? ...

  5. 快速构建Windows 8风格应用36-商店应用发布流程

    原文:快速构建Windows 8风格应用36-商店应用发布流程 引言 在发布应用之前,我们需要注册开发者账号才能够发布应用.我们可以登录https://appdev.microsoft.com/Sto ...

  6. 快速构建Windows 8风格应用37-常见发布注意事项

    原文:快速构建Windows 8风格应用37-常见发布注意事项 引言 通常我们发布Windows Store应用失败后,会返回一些错误需要我们去修改.我之前在给学生做培训的时候发现大部分同学应用被打回 ...

  7. 使用eclipse和JavaFX Scene Builder进行快速构建JavaFX应用程序

    http://blog.csdn.net/wingfourever/article/details/7726724 使用eclipse和JavaFX Scene Builder进行快速构建JavaFX ...

  8. Java Swing快速构建窗体应用程序

    以前接触java感觉其在桌面开发上,总是不太方便,没有一个好的拖拽界面布局工具,可以快速构建窗体. 最近学习了一下NetBeans IDE 8.1,感觉其窗体设计工具还是很不错的 , 就尝试一下做了一 ...

  9. 两小时快速构建微信小程序

    小程序在2017年1月上线之初,被社会极力吹捧,刻意去将其制造为一个“风口”,透支其价值.但是在之后一个月里,石破天惊迅速归为沉寂.媒体又开始过度消费小程序,大谈其鸡肋之处. 个人认为小程序的一个分水 ...

随机推荐

  1. post传参params与body的区别(@RequestParam和@RequestBody的区别)

    1.axios post请求  Content-Type默认为 application/x-www-form-urlencoded,我们传递参数的时,params里面的参数(简单的对象,通过 &quo ...

  2. C#制作网盘搜索工具(简单的爬虫)

    最近学习C#编程,在网上发现一篇winform下制作百度网盘搜索器的文章,故而下载源码学习一二.无奈原博所用的网址失效,故而自己改写了网址和相关源代码,也进行了实现.因为初学,接触的知识较多,为免忘记 ...

  3. 使用Magicodes.IE快速导出Excel

    前言 总是有很多朋友咨询Magicodes.IE如何基于ASP.NET Core导出Excel,出于从框架的体验和易用性的角度,决定对Excel的导出进行独立封装,以便于大家更易于使用,开箱即用. 注 ...

  4. 串、KMP模式匹配算法

    串是由0个或者多个字符组成的有限序列,又名叫字符串. 串的比较: 串的比较是通过组成串的字符之间的编码来进行的,而字符的编码指的是字符在对应字符集中的序号. 计算机中常用的ASCII编码,由8位二进制 ...

  5. JVM学习笔记-第六章-类文件结构

    JVM学习笔记-第六章-类文件结构 6.3 Class类文件的结构 本章中,笔者只是通俗地将任意一个有效的类或接口锁应当满足的格式称为"Class文件格式",实际上它完全不需要以磁 ...

  6. View epub and mobi File on Linux

    Calibre has stand-alone ebook viewer "ebook-viewer", start it in terminal: $ ebook-viewer ...

  7. Python - typing 模块 —— TypeVar 泛型

    前言 typing 是在 python 3.5 才有的模块 前置学习 Python 类型提示:https://www.cnblogs.com/poloyy/p/15145380.html 常用类型提示 ...

  8. BUUCTF刷题系列(1)5.25日记

    前面的题目都不太难,就直接从SQL注入开始了. 这个样子的话,明显就是注入,我们先拿出SQL语句:http://fb415201-6634-4fc3-a6bc-a67b84ea1ed2.node3.b ...

  9. Liunx搭建Rlogin服务

    实验环境为 centos7 第一步:安装服务:yum -y install rsh rsh-server xinetd  第二步:启动服务: systemctl restart rsh.sockets ...

  10. 关于Ajax异步提交登录及增删改查小项目制作-登录

    一.登录的完成 先导包jquery和MySql //异步提交 <script type="text/javascript" src="js/jquery-1.8.2 ...