有时,当我在Windows中更改环境变量,然后使用依赖于这些变量的软件时,它们没有正确更新。
一个很好的例子是更改一个变量,然后打开Windows命令行并回显该变量,即使你在“环境变量”窗口中对其进行了适当的更改,它也没有被更改。
我现在正在处理的另一个示例:
我在一个项目中使用Python 2.4.x已有一段时间了,该项目使用的env varPYTHONPATH
的值是:
C:\Python24;C:\Python24\lib
今天,我为该项目安装了Python2.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
环境变量更改并没有真正保留。
有谁知道为什么会这样以及如何解决?
当你在“系统属性”选项卡中更改环境变量时,新值将传播到Windows资源管理器,并且从Windows资源管理器(或“运行”框,“开始”菜单等)打开的所有应用(例如cmd.exe)都应看到新的价值。
但是,如果你正在运行诸如编辑器,python或某些非Microsoft程序启动器之类的程序,则更改环境变量,然后从该程序(而不是Windows资源管理器)中启动cmd.exe,你可能会看到环境变量的旧值。原因是正在运行的程序忽略了Windows发出的有关环境已更改的通知(一点也不奇怪),并且由于启动的进程继承了环境变量,因此子进程将看不到更改。
解决方法是确保从Windows资源管理器或“运行”框启动应用程序。重新启动计算机也可以(如果重新启动不能解决问题,则说明有其他事情发生)。