By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
426,165 Members | 1,928 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 426,165 IT Pros & Developers. It's quick & easy.

Using Python To Launch Python

P: n/a
aha
Hello All,
I have a situation where I can count on a Python installation being
available on a system, but I can't count on it being a version of
Python needed by my application. Since my application has it's own
version of Python installed with it how should I use the system Python
to launch the version of Python that launches my Application. Yes,
this is a convoluted process, but not all Pythons are built the
same :)

Right now I am leaning towards using exec to start a new process, but
I thought I would check to see if anyone else has had the need to
perform a task similar to this one.

AHA
Jul 14 '08 #1
Share this Question
Share on Google+
5 Replies


P: n/a
On Mon, Jul 14, 2008 at 02:01:04PM -0700, aha wrote:
Since my application has it's own version of Python installed with
it how should I use the system Python to launch the version of
Python that launches my Application. Yes, this is a convoluted
process, but not all Pythons are built the same :)
/usr/local/bin/$APPNAME:

#!/bin/sh

INSTALLPATH=<wherever app is installed>
PATH=$INSTALLPATH/bin:$PATH
exec $INSTALLPATH/bin/python $APPNAME "$@"

Doesn't get much simpler than that. :) You can certainly do the
equivalent in Python... there's not much difference. Slightly less
typing in bourne/bash shell, I guess...

--
Derek D. Martin
http://www.pizzashack.org/
GPG Key ID: 0x81CFE75D
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.1 (GNU/Linux)

iD8DBQFIe8QmdjdlQoHP510RAsFMAJ0bs2ikCfdLfkgIk/nczw4KH63ZjwCfWiAi
LuLK54OvQcANMNItfeR0aks=
=gq7l
-----END PGP SIGNATURE-----

Jul 14 '08 #2

P: n/a
On Jul 14, 4:01*pm, aha <aquil.abdul...@gmail.comwrote:
Hello All,
* I have a situation where I can count on a Python installation being
available on a system, but I can't count on it being a version of
Python needed by my application. *Since my application has it's own
version of Python installed with it how should I use the system Python
to launch the version of Python that launches my Application. *Yes,
this is a convoluted process, but not all Pythons are built the
same :)

Right now I am leaning towards using exec to start a new process, but
I thought I would check to see if anyone else has had the need to
perform a task similar to this one.

AHA
As an alternative, you may be able to use the subprocess module of
Python to do this too.

Mike
Jul 14 '08 #3

P: n/a
aha wrote:
Hello All,
I have a situation where I can count on a Python installation being
available on a system, but I can't count on it being a version of
Python needed by my application. Since my application has it's own
version of Python installed with it how should I use the system Python
to launch the version of Python that launches my Application. Yes,
this is a convoluted process, but not all Pythons are built the
same :)

Right now I am leaning towards using exec to start a new process, but
I thought I would check to see if anyone else has had the need to
perform a task similar to this one.

AHA
You didn't tell us what operating system, but if by chance it is Windows you
should use py2exe to package up your program (along with the proper
pythonXX.dll) into a distributable package.

On Linux, others have posted answers.

-Larry
Jul 14 '08 #4

P: n/a
On Mon, Jul 14, 2008 at 05:40:43PM -0400, Aquil H. Abdullah wrote:
You've hit the proverbial nail with the hammer. The problem is that my
application needs to run under both the Linux and Windows OSs, so while I
would love to use a nice sh, csh, or bash shell script. My hands are tied
because Windows does not provide such wonderful shells.
*Provides*, no... neither does it provide Python, for what that's
worth. But you can certainly get it (bash):

http://win-bash.sourceforge.net/

I suppose it's not worth installing just for this purpose though...
But you can provide with your application a DoS batch file that does
exactly the same thing (in addition to a shell script). The user
would quite intuitively use whichever were appropriate, or follow your
provided directions otherwise. Or, the equivalent in (hopefully
OS-agnostic) Python:

import os, sys

# I believe this gets the name of the root in all major OSes
def root_dir(path):
if os.path.dirname(path) == path:
return path
return (root_dir(os.path.dirname(path)))

appname = <name of your python script>
root = root_dir(os.getcwd())
install_path = os.path.join(root, "usr")
bin_path = os.path.join(install_path, "bin")
os.environ["PATH"] = bin_path + os.pathsep + os.environ["PATH"]
python_path = os.path.join(bin_path, "python")
args = sys.argv[1:]
args.insert(0, os.path.join(bin_path, appname))
args.insert(0, python_path)
args.insert(0, python_path)
os.execv(python_path, args)


-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.1 (GNU/Linux)

iD8DBQFIe/G4HEnASN++rQIRAsZcAKC8HRYRD8ysjmVGNzYVozzeL/27gACdEvLw
7d9Nwv9bzbvSTYEgOSgx3m0=
=4xtx
-----END PGP SIGNATURE-----

Jul 15 '08 #5

P: n/a
En Mon, 14 Jul 2008 21:39:20 -0300, Derek Martin <co**@pizzashack.org>
escribió:
On Mon, Jul 14, 2008 at 05:40:43PM -0400, Aquil H. Abdullah wrote:
>You've hit the proverbial nail with the hammer. The problem is that my
application needs to run under both the Linux and Windows OSs, so while
I
would love to use a nice sh, csh, or bash shell script. My hands are
tied
because Windows does not provide such wonderful shells.

*Provides*, no... neither does it provide Python, for what that's
worth. But you can certainly get it (bash):

http://win-bash.sourceforge.net/
Using the standard cmd.exe, the previously posted shell script becomes:

=== begin appname.cmd ===
set INSTALLPATH=<wherever app is installed>
call %INSTALLPATH%\bin\python %INSTALLPATH%\APPNAME.py %*
=== end appname.cmd ===

--
Gabriel Genellina

Jul 15 '08 #6

This discussion thread is closed

Replies have been disabled for this discussion.