你推荐哪些构建工具用于python?

Dav*_*ide 28 python tdd build-automation unit-testing pyinstaller

我正在开始一个小型/中型python项目,可能是在测试驱动开发中.我的背景更多是C和java而不是python(我使用了ant和makefile)

我知道在python中你可能不需要构建工具,但我会,因为我会使用cython和PyInstaller(这个东西应该在几个不同的UNIX上运行,而不是直接依赖于python)而且我想要方便从CLI中选择测试,构建文档,可能检查依赖关系等.

有人抱怨python缺乏类似make的工具.我知道很少有工具,比如scon摊铺机,但我想听听真实用户而不仅仅是他们的网站.有人使用摊铺机吗?

什么是许多软件包附带的常见setup.py?我查看了一些,看看是否有一个常见的用法,但我没有发现任何有趣的东西(也许我使用了错误的例子)

你是否建议至少坚持使用我已经知道的东西(ant和Makefile)?如果是这样,你有没有为python推荐的ant扩展(+ cython + pyinstaller + pyUnit)?


编辑:为了避免像jwp那样的进一步答案,请注意,对于这个项目,我绝对需要我的程序是一个独立的可执行文件,因为绝对不可能在目标平台上运行可执行文件的python VM.我有完全相同的hw可用于编译,所以幸运的是我不需要交叉编译(但我会在更友好的Linux上进行开发).

我还想测试我的代码是否从一开始就在Cython中编译,而不是过早优化,但只是为了确保我不会使用不兼容的功能太过分,如果Cython需要进行痛苦的重构将是非常需要的.

所以请关注我的实际问题

jwp*_*jwp 14

如果可能的话,我建议在开始时避免使用扩展模块(C/cython).获取用Python编写的所有代码,使用基于简单distutils的配置,使用-m(python -m mypkg.test.testall或任何;导入unittest)运行测试.

一旦你的项目进入一个舒适的状态,然后开始使用cython和随之而来的额外项目管理来解决一些优化问题.distutils可以构建扩展模块,所以我不确定你是否需要make/scons ..

 project-dir/
  setup.py
  mypkg/
   __init__.py
   mymod.py
   test/
    __init__.py
    testall.py
    testsomething_specific.py
Run Code Online (Sandbox Code Playgroud)

  • +1:避免构建工具和C,直到你绝对需要它们,并且可以证明你有正确的算法,但它太慢了.在你能证明你需要C之前,请避免使用它. (5认同)
  • 问:我怎么做X?答:我不明白你为什么要做X,试试Y而不是...... -1 (3认同)

Pio*_*zia 10

根据他们的网站,你的要求建议SconsPaver更能控制各种建筑任务.在后者中,您最终将使用大量sh()运行常规命令行程序的程序.

最近,我开始使用Paver,它非常适合运行测试,使用Sphinx构建文档,但我只使用纯Python.如果你想看看Paver有什么可能,我强烈推荐这两篇文章: Doug Hellmann 转换为make-to-paver写技术文档,你肯定想检查他的pavement.py 配置文件.