打开命令行时Windows环境变量改变?
有时候,当我在Windows中更改环境变量后,使用依赖这些变量的软件时,它们并没有正确更新。
一个很好的例子是,我改变了一个变量,然后打开Windows命令行,查看这个变量的值,却发现它没有变化,尽管我在环境变量窗口中已经正确修改过了。
我现在遇到的另一个例子是:
我在一个项目中使用Python 2.4.x已经有一段时间了,这个项目使用的环境变量是PYTHONPATH
,它的值一直是:
C:\Python24;C:\Python24\lib
今天我为这个项目安装了Python 2.5.x。我把我的PYTHONPATH改成了:
C:\Python25;C:\Python25\lib
当我用Python 2.5运行一个脚本并执行这个操作:
import sys
print sys.path
它输出:
'C:\\PYTHON24', 'C:\\PYTHON24\\lib' (and some other Python 2.5 related default installation paths)
所以很明显,旧的PYTHONPATH
环境变量的更改并没有真正生效……
有没有人知道为什么会这样,以及怎么解决这个问题?
1 个回答
3
当你在系统属性的选项卡中更改环境变量时,新设置的值会传递给Windows资源管理器,以及从Windows资源管理器(或者运行框、开始菜单等)打开的任何应用程序(比如cmd.exe),这些程序应该能看到新的值。
但是,如果你正在运行一个程序,比如编辑器、Python或者其他非微软的程序启动器,然后更改环境变量,再从这个程序中启动cmd.exe(而不是从Windows资源管理器),你可能会看到环境变量的旧值。原因是正在运行的程序没有接收到Windows发出的环境已更改的通知(这并不奇怪),而且启动的进程会继承环境变量,所以子进程看不到这些变化。
解决这个问题的方法是确保你是从Windows资源管理器或运行框启动你的应用程序。重启计算机也可以解决这个问题(如果重启后问题仍然存在,那可能是其他原因导致的)。