title: Why are there no Makefiles for automation in Python projects?
body: <p>As a long time Python programmer, I wonder, if a central aspect of Python culture eluded me a long time: What do we do instead of Makefiles?</p>
  
  <p>Most ruby-projects I've seen (not just rails) use <em>Rake</em>, shortly after <em>node.js</em> became popular, there was <em>cake</em>. In many other (compiled and non-compiled) languages there are classic <em>Make</em> files.</p>
  
  <p>But in Python, no one seems to need such infrastructure. I randomly picked Python projects on GitHub, and they had no automation, besides the installation, provided by <code>setup.py</code>.</p>
  
  <p><strong>What's the reason behind this?</strong></p>
  
  <p>Is there nothing to automate? Do most programmers prefer to run style checks, tests, etc. manually?</p>
  
  <p>Some examples:</p>
  
  <ul>
  <li><code>dependencies</code> sets up a virtualenv and installs the dependencies</li>
  <li><code>check</code> calls the <code>pep8</code> and <code>pylint</code> commandlinetools.</li>
  <li>the <code>test</code> task depends on <code>dependencies</code> enables the virtualenv, starts selenium-server for the integration tests, and calls <code>nosetest</code></li>
  <li>the <code>coffeescript</code> task compiles all coffeescripts to minified javascript</li>
  <li>the <code>runserver</code> task depends on <code>dependencies</code> and <code>coffeescript</code></li>
  <li>the <code>deploy</code> task depends on <code>check</code> and <code>test</code> and deploys the project.</li>
  <li>the <code>docs</code> task calls sphinx with the appropiate arguments</li>
  </ul>
  
  <p>Some of them are just one or two-liners, but IMHO, they add up. Due to the Makefile, I don't have to remember them.</p>
  
  <p>To clarify: I'm not looking for a Python equivalent for Rake. I'm glad with paver. I'm looking for the reasons.</p>