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实现在pickling的时候压缩的方法
Sep 25 Python
Python面向对象编程中关于类和方法的学习笔记
Jun 30 Python
python实现对指定输入的字符串逆序输出的6种方法
Apr 26 Python
python对视频画框标记后保存的方法
Dec 07 Python
Python增强赋值和共享引用注意事项小结
May 28 Python
Django实现微信小程序的登录验证功能并维护登录态
Jul 04 Python
Python动态声明变量赋值代码实例
Dec 30 Python
用Python生成HTML表格的方法示例
Mar 06 Python
如何基于Python代码实现高精度免费OCR工具
Jun 18 Python
pytorch  网络参数 weight bias 初始化详解
Jun 24 Python
Python求区间正整数内所有素数之和的方法实例
Oct 13 Python
Python 的 f-string 可以连接字符串与数字的原因解析
Feb 20 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
数据库相关问题
2006/10/09 PHP
php类
2006/11/27 PHP
PHP 批量删除 sql语句
2009/06/05 PHP
javascript 小型动画组件与实现代码
2010/06/02 PHP
php 二维数组时间排序实现代码
2016/11/19 PHP
不错的JS中变量相关的细节分析
2007/08/13 Javascript
容易被忽略的JS脚本特性
2011/09/13 Javascript
jQuery学习笔记(4)--Jquery中获取table中某列值的具体思路
2013/04/10 Javascript
JS返回上一页实例代码通过图片和按钮分别实现
2013/08/16 Javascript
JavaScript var声明变量背后的原理示例解析
2013/10/12 Javascript
jquery.validate.js插件使用经验记录
2014/07/02 Javascript
nodejs批量修改文件编码格式
2015/01/22 NodeJs
AngularJS中比较两个数组是否相同
2016/08/24 Javascript
vue自定义全局组件(自定义插件)的用法
2018/01/30 Javascript
vue如何进行动画的封装
2018/09/26 Javascript
js如何获取图片url的Blob值并预览示例代码
2019/03/07 Javascript
微信小程序代码上传、审核发布小程序
2019/05/18 Javascript
[58:15]2018DOTA2亚洲邀请赛 4.1 小组赛 A组 NB vs Liquid
2018/04/02 DOTA
[43:57]LGD vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
Python安装官方whl包和tar.gz包的方法(推荐)
2017/06/04 Python
django 实现编写控制登录和访问权限控制的中间件方法
2019/01/15 Python
使用PIL(Python-Imaging)反转图像的颜色方法
2019/01/24 Python
Django学习笔记之为Model添加Action
2019/04/30 Python
Django在pycharm下修改默认启动端口的方法
2019/07/26 Python
python 实现一个反向单位矩阵示例
2019/11/29 Python
python实现人工蜂群算法
2020/09/18 Python
Python实现七个基本算法的实例代码
2020/10/08 Python
英国和爱尔兰最大的地毯零售商:Kukoon
2018/12/17 全球购物
20年同学聚会邀请函
2014/02/04 职场文书
餐厅经理岗位职责和岗位目标
2014/02/13 职场文书
新任教师自我鉴定
2014/02/24 职场文书
最美家庭活动方案
2014/08/31 职场文书
应届毕业生求职信范文
2015/03/19 职场文书
2015年医生个人工作总结
2015/04/25 职场文书
2016年教师节贺卡寄语
2015/12/04 职场文书
MySQL笔记 —SQL运算符
2022/01/18 MySQL