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生成随机验证码(中文验证码)示例
Apr 03 Python
Python常用的爬虫技巧总结
Mar 28 Python
Android分包MultiDex策略详解
Oct 30 Python
教你使用python画一朵花送女朋友
Mar 29 Python
Django + Uwsgi + Nginx 实现生产环境部署的方法
Jun 20 Python
Python 隐藏输入密码时屏幕回显的实例
Feb 19 Python
python数据化运营的重要意义
Nov 25 Python
Ubuntu16.04安装python3.6.5步骤详解
Jan 10 Python
基于Python的OCR实现示例
Apr 03 Python
Python+redis通过限流保护高并发系统
Apr 15 Python
解决django 向mysql中写入中文字符出错的问题
May 18 Python
使用Python项目生成所有依赖包的清单方式
Jul 13 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
如何批量替换相对地址为绝对地址(利用bat批处理实现)
2013/05/27 PHP
PHP整合PayPal支付
2015/06/11 PHP
PHP yii实现model添加默认值的方法(两种方法)
2016/11/10 PHP
php mysql_list_dbs()函数用法示例
2017/03/29 PHP
深入理解JavaScript系列(10) JavaScript核心(晋级高手必读篇)
2012/01/15 Javascript
原生js实现跨浏览器获取鼠标按键的值
2013/04/08 Javascript
jQuery 淡出一个图像到另一个图像的实现代码
2013/06/12 Javascript
Node.js中AES加密和其它语言不一致问题解决办法
2014/03/10 Javascript
Nodejs极简入门教程(一):模块机制
2014/10/25 NodeJs
jQuery中ScrollTo用法示例
2016/09/04 Javascript
JavaScript常用代码书写规范的超全面总结
2016/09/11 Javascript
Chrome浏览器的alert弹窗禁止再次弹出后恢复的方法
2016/12/30 Javascript
javascript实现圣旨卷轴展开效果(代码分享)
2017/03/23 Javascript
浅析JS中什么是自定义react数据验证组件
2018/10/19 Javascript
深入学习JavaScript中的bom
2019/05/27 Javascript
nodejs中各种加密算法的实现详解
2019/07/11 NodeJs
vue 指令和过滤器的基本使用(品牌管理案例)
2019/11/04 Javascript
整理 node-sass 安装失败的原因及解决办法(小结)
2020/02/19 Javascript
Javascript幻灯片播放功能实现过程解析
2020/05/07 Javascript
Python批量修改文件后缀的方法
2014/01/26 Python
详解Python中的文本处理
2015/04/11 Python
Python命令行参数解析模块optparse使用实例
2015/04/13 Python
python如何实现远程控制电脑(结合微信)
2015/12/21 Python
python中找出numpy array数组的最值及其索引方法
2018/04/17 Python
PyCharm代码提示忽略大小写设置方法
2018/10/28 Python
pandas 数据归一化以及行删除例程的方法
2018/11/10 Python
python实现Dijkstra算法的最短路径问题
2019/06/21 Python
使用pip安装python库的多种方式
2019/07/31 Python
python中使用.py配置文件的方法详解
2020/11/23 Python
90后毕业生的求职信范文
2013/09/21 职场文书
信息专业学生学习的自我评价
2014/02/17 职场文书
公共场所禁烟倡议书
2014/08/30 职场文书
2016应届毕业生自荐信范文
2016/01/28 职场文书
​(迎国庆)作文之我爱我的祖国
2019/09/19 职场文书
Python基础详解之邮件处理
2021/04/28 Python
Python快速优雅的批量修改Word文档样式
2021/05/20 Python