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时间整形转标准格式的示例分享
Feb 14 Python
详细解析Python中的变量的数据类型
May 13 Python
Python读写unicode文件的方法
Jul 10 Python
Python爬取个人微信朋友信息操作示例
Aug 03 Python
在python中实现强制关闭线程的示例
Jan 22 Python
java判断三位数的实例讲解
Jun 10 Python
用django-allauth实现第三方登录的示例代码
Jun 24 Python
python画图--输出指定像素点的颜色值方法
Jul 03 Python
tensorflow使用指定gpu的方法
Feb 04 Python
vue常用指令代码实例总结
Mar 16 Python
Python 测试框架unittest和pytest的优劣
Sep 26 Python
PyTorch device与cuda.device用法
Apr 03 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
php Static关键字实用方法
2010/06/04 PHP
页面乱码问题的根源及其分析
2013/08/09 PHP
php url路由入门实例
2014/04/23 PHP
PHP二维数组排序简单实现方法
2016/02/14 PHP
Jquery知识点一 Jquery的ready和Dom的onload的区别
2011/01/15 Javascript
js关闭模态窗口刷新父页面或跳转页面
2012/12/13 Javascript
jquery根据锚点offset值实现动画切换
2014/09/11 Javascript
jQuery提示插件alertify使用指南
2015/04/21 Javascript
JQuery插件Marquee.js实现无缝滚动效果
2016/04/26 Javascript
Javascript闭包与函数柯里化浅析
2016/06/22 Javascript
BootStrap表单验证实例代码
2017/01/13 Javascript
jQuery表格的维护和删除操作
2017/02/03 Javascript
Angular使用Md5加密的解决方法
2017/09/16 Javascript
JsChart组件使用详解
2018/03/04 Javascript
AngularJS中ng-options实现下拉列表的数据绑定方法
2018/08/13 Javascript
vue 属性拦截实现双向绑定的实例代码
2018/10/24 Javascript
微信小程序时间标签和时间范围的联动效果
2019/02/15 Javascript
JS正则表达式验证端口范围(0-65535)
2020/01/06 Javascript
全面了解Nginx, WSGI, Flask之间的关系
2018/01/09 Python
Python编程flask使用页面模版的方法
2018/12/28 Python
django框架自定义模板标签(template tag)操作示例
2019/06/24 Python
python实现ping命令小程序
2020/12/28 Python
邮政员工辞职信
2014/01/16 职场文书
雪山饭庄的创业计划书范文
2014/01/18 职场文书
给物业的表扬信
2014/01/21 职场文书
2014小学教师个人工作总结
2014/11/10 职场文书
小班下学期幼儿评语
2014/12/30 职场文书
2015年党风廉政建设责任书
2015/01/29 职场文书
外国人来华邀请函
2015/01/31 职场文书
安全保证书格式
2015/02/28 职场文书
2015中秋节慰问信范文
2015/03/23 职场文书
公司放假通知范文
2015/04/14 职场文书
大学开学感言
2015/08/01 职场文书
秀!学妹看见都惊呆的Python小招数!【详细语言特性使用技巧】
2021/04/27 Python
Pyhton爬虫知识之正则表达式详解
2022/04/01 Python
Spring Data JPA框架自定义Repository接口
2022/04/28 Java/Android