快速构建CLI程序并发布到PyPi
构造一个简单的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
... 其他命令 ... 各位自己翻文档吧
正片开始
新建一个目录
tclidemopoetry init一路回车poetry add typer安装typer目录下新建一个同名的包(也可不同名)
在
包里面新建一个main.py内容就是上面typer中的内容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'打包&上传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%
如果没报错,那就稳了,新起个虚拟环境
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的更多相关文章
- 使用SpringBoot快速构建应用程序
		
1.Spring MVC和Spring Boot自带的web构建方式有所区别.Spring提供了spring-boot-starter-web自动配置模块. 2. 添加如下依赖 <depende ...
 - 5分钟快速构建苹果IPA免费发布服务器
		
在ios的开发中, 通过苹果的各种秘钥加密, 我们会生成一个.ipa文件,这就是我们的应用软件的安装包. 这个文件是能被安装到iphone/ipad上的.可是,如何才能让不在身边的人安装上这个应用呢? ...
 - Apache Commons CLI官方文档翻译 —— 快速构建命令行启动模式
		
昨天通过几个小程序以及Hangout源码学习了CLI的基本使用,今天就来尝试翻译一下CLI的官方使用手册. 下面将会通过几个部分简单的介绍CLI在应用中的使用场景. 昨天已经联系过几个基本的命令行参数 ...
 - 快速构建Windows 8风格应用3-打包发布应用
		
原文:快速构建Windows 8风格应用3-打包发布应用 本篇博文主要介绍如何打包应用程序,成功后如何部署应用程序,最后介绍如何发布应用程序到应用商店中. 如何打包Windows 8风格应用程序呢? ...
 - 快速构建Windows 8风格应用36-商店应用发布流程
		
原文:快速构建Windows 8风格应用36-商店应用发布流程 引言 在发布应用之前,我们需要注册开发者账号才能够发布应用.我们可以登录https://appdev.microsoft.com/Sto ...
 - 快速构建Windows 8风格应用37-常见发布注意事项
		
原文:快速构建Windows 8风格应用37-常见发布注意事项 引言 通常我们发布Windows Store应用失败后,会返回一些错误需要我们去修改.我之前在给学生做培训的时候发现大部分同学应用被打回 ...
 - 使用eclipse和JavaFX Scene Builder进行快速构建JavaFX应用程序
		
http://blog.csdn.net/wingfourever/article/details/7726724 使用eclipse和JavaFX Scene Builder进行快速构建JavaFX ...
 - Java Swing快速构建窗体应用程序
		
以前接触java感觉其在桌面开发上,总是不太方便,没有一个好的拖拽界面布局工具,可以快速构建窗体. 最近学习了一下NetBeans IDE 8.1,感觉其窗体设计工具还是很不错的 , 就尝试一下做了一 ...
 - 两小时快速构建微信小程序
		
小程序在2017年1月上线之初,被社会极力吹捧,刻意去将其制造为一个“风口”,透支其价值.但是在之后一个月里,石破天惊迅速归为沉寂.媒体又开始过度消费小程序,大谈其鸡肋之处. 个人认为小程序的一个分水 ...
 
随机推荐
- 面试官疯狂问我:char和varchar的区别 怎么办?愣着干嘛?进来白嫖啊!
			
MySQL的修仙之路,图文谈谈如何学MySQL.如何进阶!(已发布) 面前突击!33道数据库高频面试题,你值得拥有!(已发布) 大家常说的基数是什么?(已发布) 讲讲什么是慢查!如何监控?如何排查?( ...
 - 开源分享:谷歌大佬联合打造《高级Kotlin强化实战(附Demo)》
			
Kotlin 以其简洁的特性而闻名,而在我们的实践中,更加简洁就意味着更加高效.事实上,在使用 Kotlin 的专业 Android 开发者中,有多达 67% 的人表示 Kotlin 已经帮助他们提升 ...
 - 学习Android Jetpack? 入门教程和进阶实战这里全都有!
			
前言 2018年谷歌I/O,Jetpack横空出世,官方介绍如下: Jetpack 是一套库.工具和指南,可帮助开发者更轻松地编写优质应用.这些组件可帮助您遵循最佳做法.让您摆脱编写样板代码的工作并简 ...
 - Redis缓存哪些事儿
			
一提到Redis缓存,我们不得不了解的三个问题就是:缓存雪崩.缓存击穿和缓存穿透.这三个问题一旦发生,会导致大量的请求直接请求到数据库层.如果并发压力大,就会导致数据库崩溃.那p0级的故障是没跑了. ...
 - Recuva ——天下第一的删除恢复应用
			
天下第一的删除恢复应用 下载地址 http://www.onlinedown.net/soft/66224.htm 实名diss那个垃圾 易得恢复 98一年,真是趁火打劫(跟个老鼠一样, ...
 - iOS-block循环引用详解和应用
			
Block循环引用 什么情况下block会造成循环引用 ARC 情况下 block为了保证代码块内部对象不被提前释放,会对block中的对象进行强引用,就相当于持有了其中的对象,而如果此时block中 ...
 - Sqli-Labs less25-25a
			
less-25 前置基础知识:后面的关卡涉及到WAF绕过: 主要有三种方式:白盒绕过.黑盒绕过.fuzz测试 网上sql注入WAF绕过的教程有很多,可以自己查询,总之就是比谁思路猥琐 根据第25关下面 ...
 - Linux部署Redis服务器
			
一,Redis介绍 Redis如今已经成为Web开发社区最火热的内存数据库之一,随着Web2.0的快速发展,再加上半结构数据比重加大,网站对高效性能的需求也越来越多. 而且大型网站一般都有几百台或者更 ...
 - ASP.NET Core 修改开源协议为MIT,.NET全平台 MIT协议开源了
			
2021年7月23日,.NET开发团队完成了所有的.NET平台的相关框架的MIT协议更改,我们可以通过 https://github.com/dotnet/aspnetcore/issues/1887 ...
 - 源码安装nginx开启SSL功能
			
编译安装nginx的环境 yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel 下载nginx安装包 cd /usr/ ...