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 27 Python
python中异常捕获方法详解
Mar 03 Python
详解python之配置日志的几种方式
May 22 Python
Python分治法定义与应用实例详解
Jul 28 Python
Python中顺序表的实现简单代码分享
Jan 09 Python
TensorFlow利用saver保存和提取参数的实例
Jul 26 Python
python list转矩阵的实例讲解
Aug 04 Python
python获取中文字符串长度的方法
Nov 14 Python
python中bytes和str类型的区别
Oct 21 Python
python扫描线填充算法详解
Feb 19 Python
python可视化 matplotlib画图使用colorbar工具自定义颜色
Dec 07 Python
pytorch下的unsqueeze和squeeze的用法说明
Feb 06 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执行速率优化技巧小结
2008/03/15 PHP
PHP 强制下载文件代码
2010/10/24 PHP
PHP的Yii框架的常用日志操作总结
2015/12/08 PHP
namespace.js Javascript的命名空间库
2011/10/11 Javascript
Js-$.extend扩展方法使方法参数更灵活
2013/01/15 Javascript
javascript 原型链维护和继承详解
2014/11/26 Javascript
js实现获取div坐标的方法
2015/11/16 Javascript
window.onerror()的用法与实例分析
2016/01/27 Javascript
js中window.open的参数及注意注意事项
2016/07/06 Javascript
vue中渐进过渡效果实现
2016/10/27 Javascript
AngularJS实现在ng-Options加上index的解决方法
2016/11/03 Javascript
原生js实现回复评论功能
2017/01/18 Javascript
Bootstrap的Carousel配合dropload.js实现移动端滑动切换图片
2017/03/10 Javascript
jQuery实现表格冻结顶栏效果
2017/08/20 jQuery
AngularJs用户输入动态模板XSS攻击示例详解
2018/04/21 Javascript
如何优雅的在一台vps(云主机)上面部署vue+mongodb+express项目
2019/01/20 Javascript
详解如何使用router-link对象方式传递参数?
2019/05/02 Javascript
Vue侦测相关api的实现方法
2019/05/22 Javascript
JavaScript学习教程之cookie与webstorage
2019/06/23 Javascript
[00:35]DOTA2上海特级锦标赛 VP战队宣传片
2016/03/04 DOTA
python开发之list操作实例分析
2016/02/22 Python
python构建深度神经网络(续)
2018/03/10 Python
python实现简单淘宝秒杀功能
2018/05/03 Python
Python使用itchat模块实现群聊转发,自动回复功能示例
2019/08/26 Python
Pycharm IDE的安装和使用教程详解
2020/04/30 Python
Python接口自动化测试框架运行原理及流程
2020/11/30 Python
Ralph Lauren意大利官方网站:时尚界最负盛名的品牌之一
2018/10/18 全球购物
OSPREY LONDON官网:英国本土皮具品牌
2019/05/31 全球购物
竞聘上岗演讲稿范文
2014/01/10 职场文书
应届生自荐信范文
2014/02/21 职场文书
教育技术学专业职业规划书
2014/03/03 职场文书
大三学生学年自我鉴定
2014/09/12 职场文书
2014客服代表实习自我鉴定
2014/09/18 职场文书
2015年高中生国庆节演讲稿
2015/07/30 职场文书
婚礼必备主持词范本!
2019/07/23 职场文书
创业计划书之孕婴生活馆
2019/11/11 职场文书