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的Tornado框架异步编程入门实例
Apr 24 Python
Python递归遍历列表及输出的实现方法
May 19 Python
深入理解NumPy简明教程---数组1
Dec 17 Python
python批量爬取下载抖音视频
Jun 17 Python
python绘制地震散点图
Jun 18 Python
Python OpenCV 调用摄像头并截图保存功能的实现代码
Jul 02 Python
python pandas获取csv指定行 列的操作方法
Jul 12 Python
Python中typing模块与类型注解的使用方法
Aug 05 Python
python GUI库图形界面开发之PyQt5线程类QThread详细使用方法
Feb 26 Python
Ubuntu18.04安装 PyCharm并使用 Anaconda 管理的Python环境
Apr 08 Python
python实现交并比IOU教程
Apr 16 Python
matplotlib 三维图表绘制方法简介
Sep 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
windows下PHP APACHE MYSQ完整配置
2007/01/02 PHP
php 向访客和爬虫显示不同的内容
2009/11/09 PHP
PHP 图片水印类代码
2012/08/27 PHP
PHP设计模式之调解者模式的深入解析
2013/06/13 PHP
php实现的一个很好用HTML解析器类可用于采集数据
2013/09/23 PHP
ThinkPHP之import方法实例详解
2014/06/20 PHP
JavaScript 判断浏览器是否支持SVG的代码
2013/03/21 Javascript
js自定义鼠标右键的实现原理及源码
2014/06/23 Javascript
js对象的复制继承实例
2015/01/10 Javascript
JavaScript截断字符串的方法
2015/07/15 Javascript
jQuery搜索框效果实现代码(百度关键词联想)
2021/02/25 Javascript
值得分享的JavaScript实现图片轮播组件
2016/11/21 Javascript
原生js实现类似fullpage的单页/全屏滚动
2017/01/22 Javascript
浅谈JS验证表单文本域输入空格的问题
2017/02/14 Javascript
jQuery查找dom的几种方法效率详解
2017/05/17 jQuery
vue.js源代码core scedule.js学习笔记
2017/07/03 Javascript
详解es6新增数组方法简便了哪些操作
2019/05/09 Javascript
js验证账户名是否重复
2020/05/26 Javascript
将图片文件嵌入到wxpython代码中的实现方法
2014/08/11 Python
python实现分析apache和nginx日志文件并输出访客ip列表的方法
2015/04/04 Python
Python 在字符串中加入变量的实例讲解
2018/05/02 Python
Python中的函数作用域
2018/05/07 Python
Python2包含中文报错的解决方法
2018/07/09 Python
Python处理时间日期坐标轴过程详解
2019/06/25 Python
python使用openCV遍历文件夹里所有视频文件并保存成图片
2020/01/14 Python
定义css设备类型-Media Queries图表简介及使用方法
2013/01/21 HTML / CSS
加拿大著名时装品牌:SOIA & KYO
2016/08/23 全球购物
ZINVO手表官网:男士和女士手表
2019/03/10 全球购物
将一个数的从第5位开始的7个数取出,其余位置0
2016/05/26 面试题
如何为DataGridView添加一个定制的Column Type
2014/01/21 面试题
最新的大学生找工作自我评价
2013/09/29 职场文书
社区活动总结报告
2014/05/05 职场文书
向国旗敬礼学生寄语大全
2014/09/30 职场文书
给老师的感谢信
2015/01/20 职场文书
员工给公司的建议书
2019/06/24 职场文书
golang中实现给gif、png、jpeg图片添加文字水印
2021/04/26 Golang