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处理xml文件的方法小结
May 02 Python
python处理Excel xlrd的简单使用
Sep 12 Python
Python 关于反射和类的特殊成员方法
Sep 14 Python
python实现简单遗传算法
Mar 19 Python
对matplotlib改变colorbar位置和方向的方法详解
Dec 13 Python
python变量命名的7条建议
Jul 04 Python
python如何通过twisted搭建socket服务
Feb 03 Python
tensorflow之tf.record实现存浮点数数组
Feb 17 Python
python3实现往mysql中插入datetime类型的数据
Mar 02 Python
Python Dataframe常见索引方式详解
May 27 Python
Spring @Enable模块驱动原理及使用实例
Jun 23 Python
Python 使用office365邮箱的示例
Oct 29 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二进制流 逐bit的低位在前算法(详解)
2013/06/13 PHP
CI框架(CodeIgniter)实现的导入、导出数据操作示例
2018/05/24 PHP
php使用curl模拟浏览器表单上传文件或者图片的方法
2018/11/10 PHP
javascript工具库代码
2012/03/29 Javascript
js如何设置在iframe框架中指定div不显示
2013/12/04 Javascript
js window.onload 加载多个函数和追加函数详解
2014/01/08 Javascript
jquery 图片缩放拖动的简单实例
2014/01/08 Javascript
JS时间特效最常用的三款
2015/08/19 Javascript
js实现iframe框架取值的方法(兼容IE,firefox,chrome等)
2015/11/26 Javascript
vue中mint-ui环境搭建详细介绍
2017/04/06 Javascript
JQuery Ajax 异步操作之动态添加节点功能
2017/05/24 jQuery
nodejs 日志模块winston的使用方法
2018/05/02 NodeJs
vue+element-ui动态生成多级表头的方法
2018/08/28 Javascript
使用wxapp-img-loader自定义组件实现微信小程序图片预加载功能
2018/10/18 Javascript
vue中axios实现数据交互与跨域问题
2019/05/12 Javascript
vue router 传参获取不到的解决方式
2019/11/13 Javascript
vue 实现图片懒加载功能
2020/12/31 Vue.js
[04:22]DSPL第二期精彩集锦:残血反杀!
2014/12/10 DOTA
c++生成dll使用python调用dll的方法
2014/01/20 Python
python实现快速排序的示例(二分法思想)
2018/03/12 Python
详解利用django中间件django.middleware.csrf.CsrfViewMiddleware防止csrf攻击
2018/10/09 Python
Python常见的pandas用法demo示例
2019/03/16 Python
python的mysql数据库建立表与插入数据操作示例
2019/09/30 Python
CSS3的resize属性使用初探
2015/09/27 HTML / CSS
施工资料员的岗位职责
2013/12/22 职场文书
公司请假条格式
2014/04/11 职场文书
小学生国庆演讲稿
2014/09/05 职场文书
家属答谢词
2015/01/05 职场文书
2015年生产车间工作总结
2015/04/22 职场文书
2015年企业团支部工作总结
2015/05/21 职场文书
管理者们如何制定2019年的工作计划?
2019/07/01 职场文书
导游词之徐州-云龙山
2019/09/29 职场文书
Vue项目中如何封装axios(统一管理http请求)
2021/05/02 Vue.js
详解vue身份认证管理和租户管理
2021/05/25 Vue.js
spring boot实现文件上传
2022/08/14 Java/Android
Python创建SQL数据库流程逐步讲解
2022/09/23 Python