How can I distribute python programs?

StackOverflow

My application looks like this:

main.py
windows/
    __init__.py
    mainwindow.py
    ...
model/
    __init__.py
    orders.py
    ...
resources/
    image1.png
    logo.jpg
    ...

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.

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.

At the moment I just copy the whole source folder onto the target machine and create an alias to main.pyw on windows. Some inconveniences:

  • The icon is the default python icon.
  • I have to create the alias manually.
  • In my source directory there are a lot of additional files like the source control folder.
  • I have to rename main.py to main.pyw manually.
  • 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.

How does one create a nice automated distribution?

  • for windows? (That"s the only platform that I have to support at the moment.)
  • for mac?
  • for linux?




Tutorials