Launching an independent Python program in a cross-platform way (including mac)
Prateek
surekap at gmail.com
Sun Apr 29 19:51:35 EDT 2007
On Apr 30, 4:32 am, 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.
>
> 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é
Well,
You need to check sys.platform on the Mac instead of os.name.
os.name returns 'posix' on all *nix based systems. sys.platform
helpfully returns "darwin" on the Mac.
Not sure how to start Terminal. Here's what I got when I tried it:
>>> if sys.platform == "darwin": os.spawnlp(os.P_NOWAIT, '/Applications/Utilities/Terminal.app/Contents/MacOS/Terminal')
9460
>>> 2007-04-30 05:19:59.255 [9460] No Info.plist file in application bundle or no NSPrincipalClass in the Info.plist file, exiting
Maybe I'm just calling it wrong and you'll have more luck.
Prateek
More information about the Python-list
mailing list