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中的列表与位运算符
Oct 12 Python
Python内置模块logging用法实例分析
Feb 12 Python
python编写简易聊天室实现局域网内聊天功能
Jul 28 Python
基于MATLAB和Python实现MFCC特征参数提取
Aug 13 Python
python类的实例化问题解决
Aug 31 Python
Python写出新冠状病毒确诊人数地图的方法
Feb 12 Python
Python多线程实现支付模拟请求过程解析
Apr 21 Python
Python调用OpenCV实现图像平滑代码实例
Jun 19 Python
python 删除excel表格重复行,数据预处理操作
Jul 06 Python
python操作redis数据库的三种方法
Sep 10 Python
Python request中文乱码问题解决方案
Sep 17 Python
字典算法实现及操作 --python(实用)
Mar 31 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与MySQL交互使用详解
2006/10/09 PHP
PHP生成迅雷、快车、旋风等软件的下载链接代码实例
2014/05/12 PHP
php小技巧之过滤ascii控制字符
2014/05/14 PHP
使用纯php代码实现页面伪静态的方法
2015/07/25 PHP
php制作的简单验证码识别代码
2016/01/26 PHP
php简单实现单态设计模式的方法分析
2017/07/28 PHP
php实现的数组转xml案例分析
2019/09/28 PHP
Js之软键盘实现(js源码)
2007/01/30 Javascript
JavaScript 设计模式 富有表现力的Javascript(一)
2010/05/26 Javascript
CheckBoxList多选样式jquery、C#获取选择项
2013/09/06 Javascript
jQuery中ajax的get()方法用法实例
2014/12/26 Javascript
js判断一个字符串是以某个字符串开头的简单实例
2016/12/27 Javascript
Javascript Promise用法详解
2018/05/10 Javascript
jQuery中ajax请求后台返回json数据并渲染HTML的方法
2018/08/08 jQuery
Vue前后端不同端口的实现方法
2018/09/19 Javascript
javascript面向对象创建对象的方式小结
2019/07/29 Javascript
如何优雅地取消 JavaScript 异步任务
2020/03/22 Javascript
js将日期格式转换为YYYY-MM-DD HH:MM:SS
2020/09/18 Javascript
JS实现可以用键盘方向键控制的动画
2020/12/11 Javascript
JavaScript canvas实现文字时钟
2021/01/10 Javascript
python中lambda与def用法对比实例分析
2015/04/30 Python
详解小白之KMP算法及python实现
2019/04/04 Python
Python实现决策树并且使用Graphviz可视化的例子
2019/08/09 Python
Django Haystack 全文检索与关键词高亮的实现
2020/02/17 Python
python中round函数如何使用
2020/06/19 Python
python中HTMLParser模块知识点总结
2021/01/25 Python
联想香港官方网站及网店:Lenovo香港
2018/04/13 全球购物
施华洛世奇加拿大官网:SWAROVSKI加拿大
2018/06/03 全球购物
日本最大的购物网站乐天市场国际版:Rakuten Global Market(支持中文)
2020/02/03 全球购物
公司晚会主持词
2014/03/22 职场文书
个人四风问题整改措施思想汇报
2014/10/04 职场文书
小学教师读书笔记
2015/07/01 职场文书
详解Nginx启动失败的几种错误处理
2021/04/01 Servers
Python 文本滚动播放器的实现代码
2021/04/25 Python
Python基础之hashlib模块详解
2021/05/06 Python
HTML+css盒子模型案例(圆,半圆等)“border-radius” 简单易上手
2021/05/10 HTML / CSS