Python中是否有类似于Rake的工具?

98

Rake是用Ruby编写的软件构建工具(类似于AntMake),因此它的所有文件都是使用该语言编写的。Python中是否存在类似的工具?


3
你是否在寻找一个像 make 一样的通用依赖关系解决和构建工具,可以构建来自任何语言的项目?或者是针对构建 Python 包的工具? - Ian Clelland
1
某些通用的事情。构建Python包很有趣,但可以使用通用工具来执行。 - Bite code
2
请参见:https://dev59.com/NnRB5IYBdhLWcg3wtZMV - Ray
1
请参见http://farmdev.com/thoughts/46/the-python-make-tool/。 - jassinm
6
有人是从Joe Armstrong的幻灯片中来到这里的吗? https://youtu.be/lKXe3HUG2l4?t=1270 - nephewtom
1
想知道当前关于 Paver vs Invoke vs Doit https://pydoit.org/ 的看法,这些仍然活跃的主要竞争者在下面的答案中提到了吗? 是否有一个好的比较在某个地方? - inger
9个回答

41

Invoke — 不需要 SSH 依赖的 Fabric

Fabric roadmap 讨论了Fabric 1.x 将分为三个部分:

  1. Invoke — 非 SSH 任务执行。
  2. Fabric 2.x — 远程执行和部署库,利用 Invoke
  3. Patchwork — 基于 Fabric 的“常见部署/系统管理员操作”。
Invoke是一个Python(2.6+和3.3+)任务执行工具和库,从各种来源汲取灵感,以实现强大而清晰的功能集。
以下是Invoke网站上的一些描述性语句:
- Invoke是一个Python(2.6+和3.3+)任务执行工具和库,从各种来源汲取灵感,以实现强大而清晰的功能集。 - 像Ruby的Rake工具和Invoke自己的前身Fabric 1.x一样,它为运行shell命令和从tasks.py文件定义/组织任务函数提供了一个干净的高级API。

1
@IgorZevaka 现在它可以在Windows上运行了,同样的主题 - github.com/pyinvoke/invoke/pull/119 - Roman M. Koss
1
4年前使用过Shovel,现在一定要选择Invoke。非常酷的命令行界面,任务声明简单易懂,链式调用感觉像Make。不错。 - ddotsenko
对于 Paver(在其他答案中提到)和 Invoke,您有什么看法?它们是直接的“竞争对手”吗?优缺点是什么? - inger

28

Paver 有着类似的目标,尽管我并不清楚它与其它技术的比较。


[Paver] 有相似的目标,但我不确定它与其他技术的差异。

那似乎绝对是最接近的。 - Bite code
1
似乎在2011年就失去了动力。 - John Mee
2
该项目仍然活跃,现在的变更日志在这里:https://pythonhosted.org/Paver/changelog.html - Stefan Schmidt
1
最新版本在https://pythonhosted.org/Paver/changelog.html上,为`1.1.0(2012年7月30日)`。 - clacke
对于在此问题中提到的Invoke和Paver,您有什么看法?它们是直接的“竞争对手”吗?它们各自的优缺点是什么? - inger

14

截至2015年12月23日,Shovel在2014年12月5日进行了最近一次更新。 - Matthew Rankin

6

Waf 是一个基于 Python 的框架,用于配置、编译和安装应用程序。它源于其他构建工具的概念,如 Scons、Autotools、CMake 或 Ant。


1
Waf和Scons有什么好处? - Bite code

5

还有doit - 我一段时间前在寻找这些工具时发现它,不过我并没有对其进行深入评估。


5
尽管Fabric更常用于部署,但对于这种情况可能很有趣。

0
还可以看看 buildout,它不仅仅是软件的构建系统,更是一个部署的构建系统。

http://pypi.python.org/pypi/pysqlite/2.5.5

所以它不是直接的rake等效工具,但可能更适合您想要做的事情,或者非常糟糕。


1
使用Buildout来做这件事就像开坦克去商场一样,不是吗?无论如何,在Zope/Plone之外使用任何Zope/Plone工具都是这样的 :-p - Bite code
“为那个”?他没有具体说明他想用它来做什么。无论如何,buildout 不是 Zope/Plone 工具。它也不是很大或者很复杂。有些人只因为它是由 Zope 开发人员编写或使用而对工具不屑一顾,这种态度真的很愚蠢。 - Lennart Regebro
来吧,那只是开玩笑而已。我曾经在一家专门使用Plone的公司工作过,是的,我们常常拿我们使用的工具开玩笑。这是一种理智的态度,你不觉得吗? - Bite code

0

在 Boo 中有 Phantom(它不是 Python,但几乎相似)。


-2
我会推荐你查看distutils

distutils包提供了构建和安装Python附加模块的支持。新模块可以是100%纯Python编写的,也可以是用C编写的扩展模块,或者是包含Python和C编写的模块的Python包集合。


它是否支持生成文档或运行单元测试等功能? - Wernight

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接