A Portable Program-Launch Framework
With all of these different ways to start programs on different platforms, it can be difficult to remember what tools to use in a given situation. Moreover, some of these tools are called in ways that are complicated and thus easy to forget (for me, at least). I write scripts that need to launch Python programs often enough that I eventually wrote a module to try to hide most of the underlying details. While I was at it, I made this module smart enough to automatically pick a launch scheme based on the underlying platform. Laziness is the mother of many a useful module.
Example 5-25 collects
in a single module many of the techniques we’ve met in this chapter.
It implements an abstract superclass, LaunchMode, which defines what it means to
start a Python program, but it doesn’t define how. Instead, its
subclasses provide a run method
that actually starts a Python program according to a given scheme, and
(optionally) define an announce
method to display a program’s name at startup time.
Example 5-25. PP3E\launchmodes.py
############################################################### # launch Python programs with reusable launcher scheme classes; # assumes 'python' is on your system path (but see Launcher.py) ############################################################### import sys, os pyfile = (sys.platform[:3] == 'win' and 'python.exe') or 'python' def findPythonExe( ): try: # get path to python pypath = sys.executable # use sys in newer pys except ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access