Python 快速实现CLI 应用程序的脚手架


Posted in Python onDecember 05, 2017

今天跟大家分享一下如何快速实现一个Python CLI应用程序的脚手架,之所以会做这个是因为当时需要做一个运维的小工具希望用命令行的方式来使用,但是搜遍网上很多资料都没有系统讲解从开发、集成、发布、文档等一系列流程的文章。

工程结构

Python 快速实现CLI 应用程序的脚手架

如上图,这就是一个比较规范的Python CLI应用项目了,下面一一讲下各文件的用途:

项目文档

这里我们用Sphinx来实现文档的自动生成,当然你要首先通过markdown和rst文件定义好文档的内容,然后进入docs目录执行 make html命令就可以在_build目录下生成对应的静态文件,如下图:

Python 快速实现CLI 应用程序的脚手架

具体Sphinx如何使用以及配置后面会单独文章讲解

主工程

这里讲几个需要注意的地方

1、日志的配置:

这里可以全局设置日志的一些输出级别和格式化方式

Python 快速实现CLI 应用程序的脚手架

2、cli文件

这里通过click库来实现

Python 快速实现CLI 应用程序的脚手架

3、二进制文件打包

Python 快速实现CLI 应用程序的脚手架

如上图,有时候我们的工程中会包含二进制文件,也就是非Python代码的文件,这时候如果还是像往常一样打包发布,安装的时候会发现无法找到此文件,所以需要在根目录的MANIFEST.in文件中加入

Python 快速实现CLI 应用程序的脚手架

脚本

如下图,这里的make-release文件主要是用来自动控制版本的,如下图,通过Git 的提交记录了来作为项目的唯一版本号标识,再对 init 文件进行重新写入达到持续集成时版本号自增的目的。

Python 快速实现CLI 应用程序的脚手架

单元测试

test文件夹中存放的就是项目的单元测试文件了,这里就不细展开讲了,后面会具体讲讲如何跟Jenkins集成实现静态代码检查

setup

最重要的就是setup.py这个文件了,项目最后打包发布到pypi仓库主要的配置信息都在这里了,如下图:

Python 快速实现CLI 应用程序的脚手架

这个脚手架的项目地址:https://github.com/logan62334/python-cli-template

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python切片知识解析
Mar 06 Python
Python判断某个用户对某个文件的权限
Oct 13 Python
Python闭包函数定义与用法分析
Jul 20 Python
浅谈tensorflow中几个随机函数的用法
Jul 27 Python
判断python字典中key是否存在的两种方法
Aug 10 Python
对Pandas MultiIndex(多重索引)详解
Nov 16 Python
Python基于百度云文字识别API
Dec 13 Python
python 字典的打印实现
Sep 26 Python
Python字典深浅拷贝与循环方式方法详解
Feb 09 Python
tensorflow中tf.reduce_mean函数的使用
Apr 19 Python
详解Python 中的容器 collections
Aug 17 Python
用python对oracle进行简单性能测试
Dec 05 Python
python调用Delphi写的Dll代码示例
Dec 05 #Python
Python字典数据对象拆分的简单实现方法
Dec 05 #Python
python reduce 函数使用详解
Dec 05 #Python
有趣的python小程序分享
Dec 05 #Python
详细分析python3的reduce函数
Dec 05 #Python
Python数据可视化正态分布简单分析及实现代码
Dec 04 #Python
Python编程实现二分法和牛顿迭代法求平方根代码
Dec 04 #Python
You might like
解析ajax事件的调用顺序
2013/06/17 PHP
PHP和javascript常用正则表达式及用法实例
2014/07/01 PHP
php+MySql实现登录系统与输出浏览者信息功能
2016/07/01 PHP
Yii实现文章列表置顶功能示例
2016/10/18 PHP
PHP对象实例化单例方法
2017/01/19 PHP
教你如何解密js/vbs/vbscript加密的编码异处理小结
2008/06/25 Javascript
通过jQuery源码学习javascript(一)
2012/12/27 Javascript
jQuery中toggleClass()方法用法实例
2015/01/05 Javascript
jQuery学习笔记之jQuery+CSS3的浏览器兼容性
2015/01/19 Javascript
js实现屏幕自适应局部代码分享
2015/01/30 Javascript
js全选按钮的实现方法
2015/11/17 Javascript
利用vue实现模态框组件
2016/12/19 Javascript
jQuery 实现图片的依次加载图片功能
2017/07/06 jQuery
Node.js模块全局安装路径配置方法
2018/05/17 Javascript
vue+iview 实现可编辑表格的示例代码
2018/10/31 Javascript
解决微信小程序scroll-view组件无横向滚动的问题
2020/02/04 Javascript
[01:04]DOTA2上海特锦赛现场采访 FreeAgain遭众解说围攻
2016/03/25 DOTA
python发送邮件示例(支持中文邮件标题)
2014/02/16 Python
用Python编写一个简单的FUSE文件系统的教程
2015/04/02 Python
Python模拟随机游走图形效果示例
2018/02/06 Python
修改默认的pip版本为对应python2.7的方法
2018/11/06 Python
使用python判断你是青少年还是老年人
2018/11/29 Python
python3实现带多张图片、附件的邮件发送
2019/08/10 Python
Python解析多帧dicom数据详解
2020/01/13 Python
澳大利亚先进的皮肤和激光诊所购物网站:Soho Skincare
2018/10/15 全球购物
Fossil加拿大官网:化石手表、手袋、首饰及配饰
2019/04/23 全球购物
英国最大最好的无人机商店:Drones Direct
2019/07/12 全球购物
土木工程毕业生自荐信
2013/09/21 职场文书
自学考试自我鉴定范文
2013/09/26 职场文书
通信工程毕业生求职信
2013/11/16 职场文书
解除劳动合同协议书
2014/04/14 职场文书
个人年终总结开头
2015/03/06 职场文书
员工手册编写范本
2015/05/14 职场文书
优秀党员主要事迹材料
2015/11/04 职场文书
Django项目配置Memcached和Redis, 缓存选择哪个更有优势
2021/04/06 Python
python正则表达式re.search()的基本使用教程
2021/05/21 Python