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数据类型之列表
Jun 24 Python
基于Django URL传参 FORM表单传数据 get post的用法实例
May 28 Python
python实现从pdf文件中提取文本,并自动翻译的方法
Nov 28 Python
Python功能点实现:函数级/代码块级计时器
Jan 02 Python
Python中py文件转换成exe可执行文件的方法
Jun 14 Python
python解析xml简单示例
Jun 21 Python
python代码实现逻辑回归logistic原理
Aug 07 Python
Python数据可视化:幂律分布实例详解
Dec 07 Python
python3 pathlib库Path类方法总结
Dec 26 Python
Python装饰器用法与知识点小结
Mar 09 Python
使用Django清空数据库并重新生成
Apr 03 Python
Python web如何在IIS发布应用过程解析
May 27 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 数据库树的遍历方法
2009/02/06 PHP
ThinkPHP自动转义存储富文本编辑器内容导致读取出错的解决方法
2014/08/08 PHP
windows7下php开发环境搭建图文教程
2015/01/06 PHP
PHP的命令行命令使用指南
2015/08/18 PHP
PHP实现HTML页面静态化的方法
2015/11/04 PHP
学习php设计模式 php实现原型模式(prototype)
2015/12/07 PHP
php实现word转html的方法
2016/01/22 PHP
PHP面向对象程序设计之构造方法和析构方法详解
2019/06/13 PHP
延时重复执行函数 lLoopRun.js
2007/05/08 Javascript
jQuery的animate函数学习记录
2014/08/08 Javascript
node.js中的url.format方法使用说明
2014/12/10 Javascript
不得不分享的JavaScript常用方法函数集(上)
2015/12/23 Javascript
基于jquery编写的放大镜插件
2016/03/23 Javascript
js简单判断flash是否加载完成的方法
2016/06/21 Javascript
深入理解jquery中的each用法
2016/12/14 Javascript
jQuery实现打开网页自动弹出遮罩层或点击弹出遮罩层功能示例
2017/10/19 jQuery
详解react内联样式使用webpack将px转rem
2018/09/13 Javascript
ExtJs使用自定义插件动态保存表头配置(隐藏或显示)
2018/09/25 Javascript
Vue监听一个数组id是否与另一个数组id相同的方法
2018/09/26 Javascript
vuejs数据超出单行显示更多,点击展开剩余数据实例
2019/05/05 Javascript
vue多页面项目中路由使用history模式的方法
2019/09/23 Javascript
微信小程序仿抖音短视频切换效果的实例代码
2020/06/24 Javascript
[03:40]DOTA2亚洲邀请赛小组赛第二日 赛事回顾
2015/01/31 DOTA
[01:11:11]Alliance vs RNG 2019国际邀请赛淘汰赛 败者组BO1 8.20.mp4
2020/07/19 DOTA
Python加载带有注释的Json文件实例
2018/05/23 Python
TensorFlow tf.nn.max_pool实现池化操作方式
2020/01/04 Python
pyqt5数据库使用详细教程(打包解决方案)
2020/03/25 Python
python基于pygame实现飞机大作战小游戏
2020/11/19 Python
可以使用抽象函数重写基类中的虚函数吗
2013/06/02 面试题
社区庆中秋节活动方案
2014/02/07 职场文书
会务接待方案
2014/02/27 职场文书
《世界多美呀》教学反思
2014/03/02 职场文书
学习雷锋精神倡议书
2015/04/27 职场文书
通讯稿格式及范文
2015/07/22 职场文书
2019财务管理制度最新范本!
2019/07/09 职场文书
TV动画「神渣☆爱豆」公开第一弹主视觉图
2022/03/21 日漫