While examining py2exe et al of late, my thoughts keep returning to the idea of writing, in C or similar, a compiled stand-alone executable 'bootstrapper', which: 1) downloads and install a Python interpreter if none exists 2) runs the application's Python source code using this interpreter.
An application source code could be distributed with this small exe to wrap its top level 'main.py', and the application could then be run on machines which do not (yet) have Python installed. The goal of this is to provide a way for end-users to download and double-click a Python application, without having to know what Python is or whether (an appropriate version of) it is installed. This method has some disadvantages compared to using py2exe et al, but it has the advantage that a small application would remain small: there is no need to bundle a whole interpreter with every application. From an advocacy point of view, it also must help that merely running such an application would seamlessly put a usable Python interpreter installed and on the PATH on Windows boxes. Even my very limited understanding of the issues is enough to see that the idea is far from trivial. I'm aware that great minds are working on related and overlapping problems, so I thought I'd ask whether many people have done this already, and if not, is there any value in taking the trivial first step described above? ie. Ignore all complications, and write a simple C program to download & install an interpreter, then use that to run my Python. In the long run, to be useful for real projects, the bootstrapper would need to manage some nasty details: * different versions of the interpreter for different applications * download required packages * manage conflicting versions of packages I'm hoping that these thorny problems will be solved, if they aren't already, by the great minds working on packaging, etc. I'm very aware that I don't know anything at all about this, compared to many on the list. Be gentle with me. :-) -- http://mail.python.org/mailman/listinfo/python-list