快速介绍Python Invoke以及简单例子

简介: 快速介绍Python Invoke以及简单例子

快速介绍Python Invoke, Fabric附赠

Fabric 套娃之一 Invoke

Fabric 文档介绍了,Fabric是基于Invoke,和Paramiko的高级封装,为了更好的理解Fabric的行为,还是不想漏掉Invoke这个包,所以本文做一个快速介绍及演示,并用实例来展示他的强大之处。

什么是Invoke?

Invoke是支持python2.7和python3.4以上版本的功能强大的任务执行库。

Invoke的前身竟然就是Fabric 1.x, 同样也提供了干净,高级的API,我觉得这里的干净指的就是更加高级的封装,可能帮用户完成了一些内容解析,编解码功能,用户也不必再写大面积的CLI解析判断。当然Invoke做的远远不止这么多。Invoke封装出的高级API可以用于运行shell命令,类似于shell脚本的替换选项。

由于我的工作环境也有限,自动化可能各公司的方案都百花齐放吧。

实例

from invoke import task
@task
def clean(c, docs=False, bytecode=False, extra=''):
    patterns = ['build']
    if docs:
        patterns.append('docs/_build')
    if bytecode:
        patterns.append('**/*.pyc')
    if extra:
        patterns.append(extra)
    for pattern in patterns:
        c.run("rm -rf {}".format(pattern))
@task
def build(c, docs=False):
    c.run("python setup.py build")
    if docs:
        c.run("sphinx-build docs docs/_build")

执行方法

invoke clean build

从其中就能看出invoke的强大和简洁了

  1. 单次调用可以执行多个task(就好像 make && make install)
  2. 同时简化了命令行解析的参数处理

Invoke的前身Fabric 1.x当时的考虑是作为命令行工具作为默认的工作模式,或者说是常用的使用方式。

并且,满足了和shell脚本兼容性不好的同学可以通过,Invoke来完成一些自动化的项目打包,部署工作。

用例

>>> from invoke import run
>>> cmd = "pip install -r requirements.txt"
>>> result = run(cmd, hide=True, warn=True)
>>> print(result.ok)
True
>>> print(result.stdout.splitlines()[-1])
Successfully installed invocations-0.13.0 pep8-1.5.7 spec-1.3.1

可以看到,invoke仍可以直接下command到本地去

但从这个用例看不出来,run这个接口是否可以获取持续的终端输出,是否会阻塞,能不能有像subprocess.popen那样,拥有communicate方法可以持续通信。

最后一个用例展现了invoke对命令行参数的高级封装(是根据第一个脚本来的)

$ invoke clean --docs --bytecode build --docs --extra='**/*.pyo'
$ invoke clean -d -b build --docs -e '**/*.pyo'
$ invoke clean -db build -de '**/*.pyo'

包含了,可选参数,参数简写默认支持,这三行命令的效果是一样的

Invoke像他的很多前身一样,它也提供一些高级功能,比如命名空间,任务别名,before/after 钩子,并行执行等等。

安装

$ pip install invoke

Reference

https://www.pyinvoke.org/



相关文章
|
监控 Shell 持续交付
强大的 Python 任务自动化工具!invoke 十分钟入门指南
invoke 是从著名的远程部署工具 Fabric 中分离出来的,它与 paramiko 一起是 Fabric 的两大最核心的基础组件。
514 0
|
Python
Python:invoke强大的任务自动化工具
Python:invoke强大的任务自动化工具
|
Python
Python:invoke强大的任务自动化工具
Python:invoke强大的任务自动化工具
190 0
|
12天前
|
设计模式 开发者 Python
Python编程中的设计模式:工厂方法模式###
本文深入浅出地探讨了Python编程中的一种重要设计模式——工厂方法模式。通过具体案例和代码示例,我们将了解工厂方法模式的定义、应用场景、实现步骤以及其优势与潜在缺点。无论你是Python新手还是有经验的开发者,都能从本文中获得关于如何在实际项目中有效应用工厂方法模式的启发。 ###
|
1天前
|
数据采集 机器学习/深度学习 人工智能
Python编程入门:从基础到实战
【10月更文挑战第36天】本文将带你走进Python的世界,从基础语法出发,逐步深入到实际项目应用。我们将一起探索Python的简洁与强大,通过实例学习如何运用Python解决问题。无论你是编程新手还是希望扩展技能的老手,这篇文章都将为你提供有价值的指导和灵感。让我们一起开启Python编程之旅,用代码书写想法,创造可能。
|
3天前
|
Python
不容错过!Python中图的精妙表示与高效遍历策略,提升你的编程艺术感
本文介绍了Python中图的表示方法及遍历策略。图可通过邻接表或邻接矩阵表示,前者节省空间适合稀疏图,后者便于检查连接但占用更多空间。文章详细展示了邻接表和邻接矩阵的实现,并讲解了深度优先搜索(DFS)和广度优先搜索(BFS)的遍历方法,帮助读者掌握图的基本操作和应用技巧。
17 4
|
3天前
|
设计模式 程序员 数据处理
编程之旅:探索Python中的装饰器
【10月更文挑战第34天】在编程的海洋中,Python这艘航船以其简洁优雅著称。其中,装饰器作为一项高级特性,如同船上的风帆,让代码更加灵活和强大。本文将带你领略装饰器的奥秘,从基础概念到实际应用,一起感受编程之美。
|
5天前
|
存储 人工智能 数据挖掘
从零起步,揭秘Python编程如何带你从新手村迈向高手殿堂
【10月更文挑战第32天】Python,诞生于1991年的高级编程语言,以其简洁明了的语法成为众多程序员的入门首选。从基础的变量类型、控制流到列表、字典等数据结构,再到函数定义与调用及面向对象编程,Python提供了丰富的功能和强大的库支持,适用于Web开发、数据分析、人工智能等多个领域。学习Python不仅是掌握一门语言,更是加入一个充满活力的技术社区,开启探索未知世界的旅程。
15 5
|
3天前
|
机器学习/深度学习 JSON API
Python编程实战:构建一个简单的天气预报应用
Python编程实战:构建一个简单的天气预报应用
13 1
|
3天前
|
算法 Python
在Python编程中,分治法、贪心算法和动态规划是三种重要的算法。分治法通过将大问题分解为小问题,递归解决后合并结果
在Python编程中,分治法、贪心算法和动态规划是三种重要的算法。分治法通过将大问题分解为小问题,递归解决后合并结果;贪心算法在每一步选择局部最优解,追求全局最优;动态规划通过保存子问题的解,避免重复计算,确保全局最优。这三种算法各具特色,适用于不同类型的问题,合理选择能显著提升编程效率。
18 2
下一篇
无影云桌面