title: What is the best project structure for a Python application?
body: <p>Imagine that you want to develop a non-trivial end-user desktop (not web) application in Python. What is the best way to structure the project's folder hierarchy?</p>
  
  <p>Desirable features are ease of maintenance, IDE-friendliness, suitability for source control branching/merging, and easy generation of install packages.</p>
  
  <p>In particular:</p>
  
  <ol>
  <li>Where do you put the source?</li>
  <li>Where do you put application startup scripts?</li>
  <li>Where do you put the IDE project cruft?</li>
  <li>Where do you put the unit/acceptance tests?</li>
  <li>Where do you put non-Python data such as config files?</li>
  <li>Where do you put non-Python sources such as C++ for pyd/so binary extension modules?</li>
  </ol>