Launching an independent Python program in a cross-platform way (including mac)

André andre.roberge at gmail.com
Mon Apr 30 01:39:45 CEST 2007


On Apr 29, 8:32 pm, André <andre.robe... at gmail.com> wrote:
> I would like to find out how I can launch an independent Python
> program from existing one in a cross-platform way.  The result I am
> after is that a new terminal window should open (for io independent of
> the original script).
>
> The following seems to work correctly under Ubuntu and Windows ... but
> I haven't been able to find a way to make it work under Mac OS.
>

Forgot to add that there was an import as follows:

import os  # should have been obvious
from subprocess import Popen   # slightly less so


> def exec_external(code, path):
>     """execute code in an external process
>     currently works under:
>         * Windows NT (tested)
>         * GNOME (tested)  [January 2nd and 15th change untested]
>     This also needs to be implemented for OS X, KDE
>     and some form of linux fallback (xterm?)
>     """
>     if os.name == 'nt':
>         current_dir = os.getcwd()
>         target_dir, fname = os.path.split(path)
>
>     filename = open(path, 'w')
>     filename.write(code)
>     filename.close()
>
>     if os.name == 'nt':
>         os.chdir(target_dir) # change dir so as to deal with paths
> that
>                              # include spaces
>         Popen(["cmd.exe", ('/c start python %s'%fname)])
>         os.chdir(current_dir)
>     elif os.name == 'posix':
>         try:
>             os.spawnlp(os.P_NOWAIT, 'gnome-terminal', 'gnome- terminal',
>                                 '-x', 'python', '%s'%path)
>         except:
>             raise NotImplementedError
>     else:
>         raise NotImplementedError
> ==========================
> Any help would be greatly appreciated.
>
> André





More information about the Python-list mailing list