[Python-Dev] Single-file Python executables (was: Computed Goto dispatch for Python 2)

Donald Stufft donald at stufft.io
Thu May 28 19:20:06 CEST 2015

On May 28, 2015 at 12:54:34 PM, Chris Angelico (rosuav at gmail.com) wrote:
> On Fri, May 29, 2015 at 2:28 AM, Chris Barker wrote:
> > oops, sorry -- I see this was addressed in another thread. Though I guess I
> > still don't see why "single file" is critical, over "single thing to
> > install" -- like a OS-X app bundle that can just be dragged into the
> > Applications folder.
> There's also "single thing to uninstall", which IMO is more important.
> If I download a tiny program that's supposed to just do one tiny
> thing, and it has to install itself into Program Files, Common Files,
> Windows\System32, and Documents & Settings\my-user-name\Applications,
> then I have to hope it has a proper uninstaller. If it's a single
> executable that just does its stuff (or, failing that, a single zip
> file that I extract to anywhere and run the program), I can expect
> that deleting that file (or directory) will get rid of it all. Of
> course, it's entirely possible that it's gone and left its droppings
> all over the system, but that's a matter of trust - a legit program
> won't lie about that.
> Is this a Windows-specific issue, or is it also intended for Linux and
> Mac OS, where there'll already be a system Python (so a
> single-file-executable would be used to be independent of the system
> Python)?

I think it’s an issue for all platforms, even when there is a system Python
that can be used.

Here’s why:

* Even on Linux systems Python isn’t always a guaranteed thing to be installed,
  for instance Debian works just fine without any Python installed.

* On OS X you have the system Python yes, but that is in an unknown state. It
  could have any number of changes made to it or things installed or what have

* Even if you have Python installed already, is it the right one? What if it’s
  an ancient RHEL box that has 2.6 or (heaven forbid) 2.4? What if it’s a not
  ancient box that has Python 2.7 but you want to deploy your app in Python 3?

* What if you have Python installed already, but it’s been patched by the place
  you got it from and now the behavior is different than what you expected?

etc etc.

Donald Stufft
PGP: 7C6B 7C5D 5E2B 6356 A926 F04F 6E3C BCE9 3372 DCFA

More information about the Python-Dev mailing list