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 相关文章推荐
Hadoop中的Python框架的使用指南
Apr 22 Python
python实现用户登陆邮件通知的方法
Jul 09 Python
python基于itchat实现微信群消息同步机器人
Feb 27 Python
Python操作MongoDB数据库的方法示例
Jan 04 Python
Python学习之Anaconda的使用与配置方法
Jan 04 Python
python基于物品协同过滤算法实现代码
May 31 Python
解决webdriver.Chrome()报错:Message:'chromedriver' executable needs to be in Path
Jun 12 Python
python程序快速缩进多行代码方法总结
Jun 23 Python
Python中print函数简单使用总结
Aug 05 Python
Python帮你识破双11的套路
Nov 11 Python
python开发一款翻译工具
Oct 10 Python
python数字图像处理之对比度与亮度调整示例
Jun 28 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
Search File Contents PHP 搜索目录文本内容的代码
2010/02/21 PHP
php判断输入不超过mysql的varchar字段的长度范围
2011/06/24 PHP
PHP实现的带超时功能get_headers函数
2015/02/10 PHP
详解thinkphp5+swoole实现异步邮件群发(SMTP方式)
2017/10/13 PHP
php利用ob_start()清除输出和选择性输出的方法
2018/01/18 PHP
laravel 解决ajax异步提交数据,并还回填充表格的问题
2019/10/15 PHP
善用事件代理,警惕闭包的性能陷阱。
2011/01/20 Javascript
你必须知道的Javascript知识点之"字面量和对应类型"说明介绍
2013/04/23 Javascript
JS使用for循环遍历Table的所有单元格内容
2014/08/21 Javascript
深入理解JavaScript编程中的原型概念
2015/06/25 Javascript
浅谈javascript 函数表达式和函数声明的区别
2016/01/05 Javascript
jQuery实现的导航动画效果(附demo源码)
2016/04/01 Javascript
AngularJs  Using $location详解及示例代码
2016/09/02 Javascript
微信小程序页面间值传递的两种方法
2018/11/26 Javascript
electron-vue利用webpack打包实现多页面的入口文件问题
2019/05/12 Javascript
简述vue-cli中chainWebpack的使用方法
2019/07/30 Javascript
jQuery实现弹出层效果
2019/12/10 jQuery
VUE 项目在IE11白屏报错 SCRIPT1002: 语法错误的解决
2020/09/27 Javascript
[52:10]LGD vs Optic Supermajor小组赛D组胜者组决赛 BO3 第二场 6.3
2018/06/04 DOTA
深入讨论Python函数的参数的默认值所引发的问题的原因
2015/03/30 Python
python实现分析apache和nginx日志文件并输出访客ip列表的方法
2015/04/04 Python
python实现身份证实名认证的方法实例
2019/11/08 Python
python异常处理和日志处理方式
2019/12/24 Python
Win10里python3创建虚拟环境的步骤
2020/01/31 Python
Python高并发解决方案实现过程详解
2020/07/31 Python
css3 自定义字体font-face使用介绍
2014/05/14 HTML / CSS
用CSS3实现瀑布流布局的示例代码
2017/11/10 HTML / CSS
mui几种页面跳转方式对比总结概括
2017/08/18 HTML / CSS
Pretty Little Thing爱尔兰:时尚女性服饰
2017/03/27 全球购物
亚洲在线旅行门户网站:Expedia.com.hk(智游网)
2020/04/14 全球购物
C#软件工程师英语面试题
2015/06/07 面试题
后勤副校长自我鉴定
2013/10/13 职场文书
给导游的表扬信
2014/01/10 职场文书
股权转让协议书范本
2014/04/12 职场文书
书法兴趣小组活动总结
2014/07/07 职场文书
毕业论文答辩开场白
2015/05/27 职场文书