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的Django框架使用的一些实用建议
Apr 03 Python
Python遍历文件夹和读写文件的实现代码
Aug 28 Python
Python实现Youku视频批量下载功能
Mar 14 Python
用不到50行的Python代码构建最小的区块链
Nov 16 Python
解决Python获取字典dict中不存在的值时出错问题
Oct 17 Python
python从子线程中获得返回值的方法
Jan 30 Python
python实现简单日期工具类
Apr 24 Python
Python redis操作实例分析【连接、管道、发布和订阅等】
May 16 Python
python求最大值最小值方法总结
Jun 25 Python
解决python虚拟环境切换无效的问题
Apr 30 Python
基于Python实现粒子滤波效果
Dec 01 Python
python利用xpath爬取网上数据并存储到django模型中
Feb 26 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/08/31 PHP
PHP对象转换为数组函数(递归方法)
2012/02/04 PHP
一个PHP的ZIP压缩类分享
2014/05/04 PHP
php递归遍历删除文件的方法
2015/04/17 PHP
PHP中的switch语句的用法实例详解
2015/10/21 PHP
php表单提交实例讲解
2015/11/12 PHP
PHP闭包定义与使用简单示例
2018/04/13 PHP
php实现算术验证码功能
2018/12/05 PHP
用PHP做了一个领取优惠券活动的示例代码
2019/07/05 PHP
Laravel 自带的Auth验证登录方法
2019/09/30 PHP
js中array的sort()方法使用介绍
2014/02/20 Javascript
jq实现酷炫的鼠标经过图片翻滚效果
2014/03/12 Javascript
jQuery中选择器小问题(新人难免遇到)
2014/03/31 Javascript
js动态修改表格行colspan列跨度的方法
2015/03/30 Javascript
JQuery创建DOM节点的方法
2015/06/11 Javascript
jQuery绑定事件监听bind和移除事件监听unbind用法实例详解
2016/01/19 Javascript
JavaScript蒙板(model)功能的简单实现代码
2016/08/04 Javascript
微信小程序 wx.request(OBJECT)发起请求详解
2016/10/13 Javascript
ES6学习笔记之Set和Map数据结构详解
2017/04/07 Javascript
详解Angular5 路由传参的3种方法
2018/04/28 Javascript
详解使用Next.js构建服务端渲染应用
2018/07/10 Javascript
使用layui 渲染table数据表格的实例代码
2018/08/19 Javascript
JavaScript学习笔记之DOM操作实例分析
2019/01/08 Javascript
Vue.js路由实现选项卡简单实例
2019/07/24 Javascript
微信小程序保存图片到相册权限设置
2020/04/09 Javascript
python应用程序在windows下不出现cmd窗口的办法
2014/05/29 Python
Python set常用操作函数集锦
2017/11/15 Python
手把手教你用python抢票回家过年(代码简单)
2018/01/21 Python
Scrapy-Redis结合POST请求获取数据的方法示例
2019/05/07 Python
Python二次规划和线性规划使用实例
2019/12/09 Python
软件部经理岗位职责范本
2014/02/25 职场文书
文化与传播毕业生求职信
2014/03/09 职场文书
违反交通法规检讨书
2014/09/10 职场文书
工程款申请报告
2015/05/15 职场文书
2017年大学生寒假社会实践活动总结
2016/04/06 职场文书
《工作是最好的修行》读后感3篇
2019/12/13 职场文书