欢迎来到 Invoke!

网站涵盖了 Invoke 的项目信息,如更新日志、贡献指南、发展路线图、新闻/博客等等。详细的用法和 API 文档可以在我们的代码文档网站上找到,docs.pyinvoke.org。另外,项目维护者在他的网站上保留了一个 路线图

请看下面的高层次介绍,或通过左边的导航了解网站的其他内容。

什么是 Invoke?

Invoke 是一个 Python(2.7 和 3.4 以上)任务执行工具和库,从各种来源获得灵感,以达到一个强大而简洁的功能集。

  • 就像 Ruby 的 Rake 工具和 Invoke 自己的前身 Fabric 1.x 一样,它为运行 shell 命令和定义/组织来自 tasks.py 文件的任务函数提供了一个干净的、高水平的 API:

    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")
    
  • 从 GNU Make 中,它继承了对常见模式的最小模板的强调,以及在一次调用中运行多个任务的能力

    $ invoke clean build
    
  • Fabric 1.x 认为命令行方法是默认的使用模式,而 Invoke(以及建立在它之上的工具)同样可以嵌入你自己的 Python 代码或 REPL 中:

    >>> 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
    
  • 跟随大多数 Unix CLI 应用程序的步伐,它提供了一种传统的基于标志的命令行解析风格,从任务签名中推导出标志名称和值类型(当然是可选的!)

    $ invoke clean --docs --bytecode build --docs --extra='**/*.pyo'
    $ invoke clean -d -b build --docs -e '**/*.pyo'
    $ invoke clean -db build -de '**/*.pyo'
    
  • 像它的许多前辈一样,它也提供了先进的功能–命名空间、任务别名、前后钩、并行执行等等。