Is there a Rake equivalent in Python?
PythonBuild AutomationPython Problem Overview
Python Solutions
Solution 1 - Python
Invoke — Fabric without the SSH dependencies.
The Fabric roadmap discusses that Fabric 1.x will be split into three portions:
- Invoke — The non-SSH task execution.
- Fabric 2.x — The remote execution and deployment library that utilizes Invoke.
- Patchwork — The "common deployment/sysadmin operations, built on Fabric."
Invoke is a Python (2.6+ and 3.3+) task execution tool & library, drawing inspiration from various sources to arrive at a powerful & clean feature set.
Below are a few descriptive statements from Invoke's website:
> * Invoke is a Python (2.6+ and 3.3+) task execution tool & library, drawing inspiration from various sources to arrive at a powerful & clean feature set. > * Like Ruby’s Rake tool and Invoke’s own predecessor Fabric 1.x, it provides a clean, high level API for running shell commands and defining/organizing task functions from a tasks.py file.
Solution 2 - Python
Paver has a similar set of goals, though I don't really know how it compares.
Solution 3 - Python
Solution 4 - Python
Waf is a Python-based framework for configuring, compiling and installing applications. It derives from the concepts of other build tools such as Scons, Autotools, CMake or Ant.
Solution 5 - Python
Although it is more commonly used for deployment, Fabric might be interesting for this use case.
Solution 6 - Python
There is also doit - I came across it while looking for these things a while ago, though I didn't get very far with evaluating it.
Solution 7 - Python
Also check out buildout, which isn't so much a make system for software, as a make system for a deployment.
http://pypi.python.org/pypi/pysqlite/2.5.5
So it's not a direct rake equivalent, but may be a better match for what you want to do, or a really lousy one.
Solution 8 - Python
There is Phantom in Boo (which isn't Python, but nearly).
Solution 9 - Python
I would check out distutils
:
> The distutils
package provides support
> for building and installing additional
> modules into a Python installation.
> The new modules may be either
> 100%-pure Python, or may be extension
> modules written in C, or may be
> collections of Python packages which
> include modules coded in both Python
> and C.