views:

133

answers:

1

Sometimes when I change my environment variables in Windows, and then use software the depends on those variables, they are not properly updated.

And good example is to change a variable, then open up Windows Command Line and echo the variable and see that it hasn't been changed, even though you properly changed it in the Environment Variables window.

Another example I'm dealing with right now:

I've been using Python 2.4.x for a while for a project, which uses the env var PYTHONPATH who's value has been:

C:\Python24;C:\Python24\lib

Today I installed Python 2.5.x for the project. I changed my PYTHONPATH to be:

C:\Python25;C:\Python25\lib

When I use Python 2.5 to run a script and do this:

import sys
print sys.path

It prints:

'C:\\PYTHON24', 'C:\\PYTHON24\\lib' (and some other Python 2.5 related default installation paths)

So clearly, the old PYTHONPATH environment variable changes aren't really sticking....

Does anyone know why this happens and how to fix it?

+2  A: 

When you change an environment variable in the System Properties tab, the new value will propagate to the Windows Explorer, and any apps (such as cmd.exe) opened from the Windows Explorer (or the Run box, Start Menu, etc.) should see the new value.

However, if you're running a program such as an editor or python or some non-Microsoft program launcher, then change an environment variable, and then launch cmd.exe from that program (instead of Windows Explorer) you are likely to see the old value of the environment variable. The reason is that the running program ignored the notification from Windows saying that the environment has changed (not at all unusual), and since the launched process inherits the environment variables, the child process won't see the changes.

The workaround is to make sure you start your app from Windows Explorer or the Run box. Rebooting your machine will work also (if rebooting doesn't solve the problem, then something else is going on).

jdigital