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