title: How can I distribute python programs?
body: <p>My application looks like this:</p>
  
  <pre>
  main.py
  windows/
      __init__.py
      mainwindow.py
      ...
  model/
      __init__.py
      orders.py
      ...
  resources/
      image1.png
      logo.jpg
      ...
  </pre>
  
  <p>The program is started with main.py. Is there a good way to create a 'final' application out of it? I'm thinking of something like py2exe/py2app, but without copying the python interpreter / modules into the application where one has only one executable.</p>
  
  <p>I had a look at distutils, but this looks like it installs a program into the Python directory, which isn't usual on non-linux platforms.</p>
  
  <p>At the moment I just copy the whole source folder onto the target machine and create an alias to <code>main.pyw</code> on windows. Some inconveniences:</p>
  
  <ul>
  <li>The icon is the default python icon.</li>
  <li>I have to create the alias manually.</li>
  <li>In my source directory there are a lot of additional files like the source control folder.</li>
  <li>I have to rename <code>main.py</code> to <code>main.pyw</code> manually.</li>
  <li>It would be nice if only `.pyo* files are on the target machine. There's no real reason for it, I just don't like having unnecessary files.</li>
  </ul>
  
  <p>How does one create a nice automated distribution?</p>
  
  <ul>
  <li>for windows? (That's the only platform that I have to support at the moment.)</li>
  <li>for mac?</li>
  <li>for linux?</li>
  </ul>