Invoke 是简单的 Python 系统任务执行程序。用于管理面向shell的子进程,并将可执行的Python代码组织到CLI可调用的任务中。它从各种来源(make
/ rake
,Fabric 1.x等)中汲取灵感,以获得功能强大且简洁的功能集。
- 像Ruby的Rake工具和Invoke自己的前身Fabric 1.x一样,它提供了一个干净的高级API,用于运行Shell命令并从
tasks.py
文件定义/组织任务功能 - 从GNU Make继承了对通用模式的最小要求,并具有在一次调用中运行多个任务的能力
- 在Fabric 1.x认为命令行方法是默认的使用方式的情况下,Invoke(及其上构建的工具)同样在 home 中嵌入用户自己的Python代码或REPL中
- 跟随大多数Unix CLI应用程序的步伐,它提供了传统的基于标志的命令行解析风格,从任务签名中获取标志名称和值类型
- 提供了高级功能--namespacing、task aliasing、before/after hooks、parallel execution 等。
示例:
from invoke import run, task @task def clean(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: run("rm -rf %s" % pattern) @task def build(docs=False): run("python setup.py build") if docs: run("sphinx-build docs docs/_build")
评论