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解释执行原理分析
Aug 22 Python
Python的迭代器和生成器
Jul 29 Python
python开发之字符串string操作方法实例详解
Nov 12 Python
Python利用Beautiful Soup模块搜索内容详解
Mar 29 Python
Python实现读取及写入csv文件的方法示例
Jan 12 Python
对dataframe进行列相加,行相加的实例
Jun 08 Python
python获取点击的坐标画图形的方法
Jul 09 Python
python实现从wind导入数据
Dec 03 Python
Python实现钉钉订阅消息功能
Jan 14 Python
python 6行代码制作月历生成器
Sep 18 Python
selenium学习教程之定位以及切换frame(iframe)
Jan 04 Python
Python中Schedule模块使用详解 周期任务神器
Apr 19 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下 PHP4.0与oracle 8的连接设置
2006/10/09 PHP
php4的session功能评述(三)
2006/10/09 PHP
PHP中PDO的事务处理分析
2016/04/07 PHP
JS获取scrollHeight问题想到的标准问题
2007/05/27 Javascript
Jquery操作Select 简单方便 一个js插件搞定
2009/11/12 Javascript
js 页面传参数时 参数值含特殊字符的问题
2009/12/13 Javascript
使用js获取QueryString的方法小结
2010/02/28 Javascript
JavaScript 原型链学习总结
2010/10/29 Javascript
JS实现自适应高度表单文本框的方法
2015/02/25 Javascript
javascript实现简单的html5视频播放器
2015/05/06 Javascript
js设置document.domain实现跨域的注意点分析
2015/05/21 Javascript
JavaScript实现数组随机排序的方法
2015/06/26 Javascript
js点击按钮实现带遮罩层的弹出视频效果
2015/12/19 Javascript
利用jquery实现下拉框的禁用与启用
2016/12/07 Javascript
ES6概念 Symbol.keyFor()方法
2016/12/25 Javascript
JavaScript中数组的各种操作的总结(必看篇)
2017/02/13 Javascript
纯js实现html转pdf的简单实例(推荐)
2017/02/16 Javascript
JavaScript中transform实现数字翻页效果
2017/03/08 Javascript
Vue.js仿Metronic高级表格(一)静态设计
2017/04/17 Javascript
Axios学习笔记之使用方法教程
2017/07/21 Javascript
JS设计模式之观察者模式实现实时改变页面中金额数的方法
2018/02/05 Javascript
Node.js爬取豆瓣数据实例分析
2018/03/05 Javascript
工作中常用到的ES6语法
2018/09/04 Javascript
探秘vue-rx 2.0(推荐)
2018/09/21 Javascript
详释JavaScript执行环境与执行栈
2019/04/02 Javascript
微信小程序自定义导航栏(模板化)
2019/11/15 Javascript
JavaScript工具库MyTools详解
2020/01/01 Javascript
JS中类的静态方法,静态变量,实例方法,实例变量区别与用法实例分析
2020/03/14 Javascript
Python魔法方法功能与用法简介
2019/04/04 Python
python导入pandas具体步骤方法
2019/06/23 Python
Python进程池Pool应用实例分析
2019/11/27 Python
CSS中越界问题的经典解决方案【推荐】
2016/04/19 HTML / CSS
早餐连锁店计划书
2014/01/08 职场文书
二年级小学生评语
2014/04/21 职场文书
自愿解除劳动合同协议书
2014/09/11 职场文书
2015学生会文艺部工作总结
2015/04/03 职场文书