Build Tools

I’m doing a survey for build tools in python.  Now, before any of you say “make”, be warned that I’ve been doing C and C++ programming for decades and even those project don’t even use make anymore if they can help it.  There are way better tools than make, especially in python!

Paver

I used paver on a previous project and thought it was OK but fairly verbose.  It was pretty easy to extend it and get it to do exactly what I wanted, however, so it worked just fine for that project. It doesn’t look like there’s too much activity on the project in github currently, but that may just mean it’s stable.

Scons, Waf

I’ve looked into these in previous lives as a build tool for C++ projects.  They both seem a little heavy for what I’m doing here (but I’d entertain arguments to the contrary).  I’m skipping them for now as “too complex”.  Again, this might not be a fair assessment.

Doit

This looked promising.  I like design and the documentation was pretty good.  It looks to be under active development.  The reason this isn’t my front runner at this point is, oddly enough, its name.  “Doit” is a french verb, making it cumbersome to do google searches on.  This is just a little extra friction, I’ll admit.  Given a wildly superior tool, I’d definitely put up with it, but this didn’t stand out that much.

Pybuilder

This is the one I’m exploring for now.  It has an active develpment community with quick response times to issues.  The documentation is OK, but certainly could use some work.  It is not at all verbose.  Actually, I’d say it errs on the side of being “too magic” where it’s hard to understand the “how” of what’s going on.  But, it seems to do the things I need AND it has a project to do a django plugin.

I haven’t tested the plugin out as of yet, but it looks like it could be a good building block to get a good development system in place with unit tests, coverage reports (so you can play the ‘coverage game’) and some good packaging.

If you’ve got a favorite I skipped or think I missed some important feature of one of the above tools, please let me know in the comments section!

Author: Jim Anderson

I'm a gray-haired coder and an avid snowboarder. I've had a long career doing all levels of software development from assembly language on 8 bit micros to Java Servlets for enterprise servers. Mainly my work consists of C/C++ on embedded systems, however. I enjoy Python coding and Django as a hobby. Almost as much fun as a powder day!

3 thoughts on “Build Tools”

  1. Have you tried Meson? It’s all the rage these days, in GNOME circles. I don’t know how applicable or useful it is for pure Python projects. I’ve never tried it myself.

    I’ve used zc.buildout in the past, but I’m trying to get rid of it because I don’t like pain. Paver was inspired by it, so I don’t think it’s worth investigation.

    I’ve worked on projects that used Waf to create a buildout.cfg. I don’t have anything good to say about that setup. Not recommended.

    I think I’ve seen projects that used Fabric to set up local dev environments. That felt like using the wrong tool for the job to me, and also scary (I don’t want any system-wide changes, other than maybe sudo apt-get installing some deps, but I’d rather do that myself).

    I’m currently happiest with projects where I’m using Makefiles to drive virtualenv + pip.

Leave a Reply

Your email address will not be published. Required fields are marked *