Alex Rivera | Logout

Can a python script persistently change a Windows environment variable? (elegantly)

Asked 2009-01-28T17:00:53.553
10

Following on from my previous question, is it possible to make a Python script which persistently changes a Windows environment variable?

Changes to os.environ do not persist once the python interpreter terminates. If I were scripting this on UNIX, I might do something like:

set foo=`myscript.py`

But alas, cmd.exe does not have anything that works like sh's back-tick behavior. I have seen a very long-winded solution... it 'aint pretty so surely we can improve on this:

for /f "tokens=1* delims=" %%a in ('python  ..\myscript.py') do set path=%path%;%%a

Surely the minds at Microsoft have a better solution than this!

Note: exact duplicate of this question.

Edit
Report

2 Answers

3

Windows sets Environment variables from values stored in the Registry for each process independently.

However, there is a tool in the Windows XP Service Pack 2 Support Tools named setx.exe that allows you to change global Environment variables from the command line.

answered 2009-01-28T18:25:05.460
1

Your long-winded solution is probably the best idea; I don't believe this is possible from Python directly. This article suggests another way, using a temporary batch file:

http://code.activestate.com/recipes/159462/

answered 2009-01-28T17:24:23.023

Your Answer