Python 构建系统

20 投票
3 回答
9031 浏览
提问于 2025-04-16 01:35

各种类似于 Python 的 make 系统有哪些优缺点呢?

注意:我们在列表项的开头用 '(+)' 和 '(-)' 来分别表示优点和缺点。

到目前为止,我知道的有:

  • buildit
    • 之前叫做 pymake
    • (-) 似乎已经过时了:最后一次发布是在2007年底
  • zc.buildout
    • (+) 截至2010年7月20日仍在活跃使用
    • 使用类似于配置文件的语法,包含 [sections]
    • (-) 似乎无法轻松将 Python 代码整合到配置文件中。
    • 似乎非常强调与 .egg 文件的配合使用。
  • scons
    • (+) 截至2010年7月20日仍在活跃使用
    • 配置文件是用纯 Python 编写的
    • (+) 可以轻松将 Python 代码整合到配置文件中
    • (-)? 使用 Python 编写配置文件可能会显得有些啰嗦
  • waf
    • (+)? Mark 说“优点和 scons 一样,但更快”
    • 有什么缺点吗?为什么还有人继续使用 scons

3 个回答

-1

我大约在1.5到2年前使用过waf,当时它的文档非常少而且质量很差,这让它的使用变得很受限制。不过我已经有一段时间没用waf了,所以也许情况已经改善了。

2

以下是截至2015年5月31日,关于4种Python 3软件构建系统的状态。

4

waf的一个特点是,它需要被放到程序的源代码目录里。相比之下,Scons更像是make,它只需要在系统上安装一次,然后你在源代码目录里只需要一个数据文件(其实就是一个Python程序)。

因此,在Ubuntu/Debian系统上,Scons是可以打包的,而waf则不是。

在Scons中进行元编程(也就是编写程序来生成程序)来处理依赖关系图或者添加新的概念是可能的,但有点难。听说waf在这方面做得更好。

我以前用Scons做过很多项目,感觉挺不错的;不过在下一个编译的项目中,我可能会尝试一下waf。

你可以看看Samba对waf的使用经验。他们报告说,从autoconf切换到Waf后,rpaths设置得更正确了,并且通过每个程序只链接必要的目标文件一次,缩小了二进制文件的大小。

撰写回答