For me, the only justification for using a language-specific build tool (e.g. grunt, rake, paver, ...) is when you actually want to exchange data with a library / program written in that language. On the other hand, you could probably accomplish the same effect using environment variables, with the upside of having a cleaner interface.
For those that are curious which build tools exist for Python, here's an (incomplete) list:
* pyinvoke (https://github.com/pyinvoke) - claims to be the successor of fabric, pretty solid and well-maintained
Documentation can be challenging to find, and it isn't the most actively developed project in the world, but what it does, it does pretty well (including supporting more than python dependencies).
Thanks for posting the link! I hesitated including configuration management tools since the use case is not the same. There's a lot of interesting stuff going on there though: With Saltstack and Ansible we have two serious "chef" contenders for Python now.
For those that are curious which build tools exist for Python, here's an (incomplete) list:
* pyinvoke (https://github.com/pyinvoke) - claims to be the successor of fabric, pretty solid and well-maintained
* fabric (http://www.fabfile.org/) - not actually a build tool but often used as one
* paver (http://paver.github.io/paver/) - no longer actively maintained
* doit (http://pydoit.org/) - one of the few tools that actually support monitoring file states (like the original make)
* disttools (https://docs.python.org/2/distutils/) - not actually a "universal" build tool but intended to distribute Python packages