views:

350

answers:

3

I want to call a python script from batch script, but I dont want to hard-code path to python executable (python.exe) in my calling script.

e.g.

c:\python26\python.exe test.py

$PYTHONPATH\python.exe test.py

Is there any way to have PYTHONPATH like setting ?

+3  A: 

The simplest thing is to add c:\python26 to you system's PATH.

Also, depending on how you installed Python, you should be able to just use test.py on the command line.

Ned Batchelder
Doesn't python installation do any such setting? Because I will not know on which setup will my script run.
vinit dhatrak
Some Python installers do, but I don't know if you can count on it.
Ned Batchelder
+3  A: 
set PYTHON_INSTALL=D:\python26

then:

%PYTHON_INSTALL%\python.exe test.py

You could set up the PYTHON_INSTALL var using My Computer | Advanced | Environment Variables if you want it to persist.

EDIT: And building on the other post (put the path to Python in the system path), you could have the best of both worlds:

set PATH=%PATH%;%PYTHON_INSTALL%

Then you can just call:

python test.py

EDIT 2:

Renamed 'PYTHONPATH' to 'PYTHON_INSTALL' as another poster pointed out that the environment variable 'PYTHONPATH' already has a defined use.

monojohnny
Don't use PYTHONPATH for this, as it already serves a different purpose (telling Python about extra directories to add to its module search path.)
Thomas Wouters
And I think 'set PATH' should use ';' as the separator.
Dave Bacher
+1  A: 

Try

set PYTHONPATH=c:\python26
%PYTHONPATH%\python.exe test.py

Or

set PATH=%PATH%;C:\python26;
python test.py

Note: environment variable PYTHONPATH has different purpose for searching python modules/extensions, So should not be shadowed.

PYTHONPATH   : ';'-separated list of directories prefixed to the
               default module search path.  The result is sys.path.
S.Mark