打开命令行时Windows环境变量会改变吗?

时间:2010-06-03 04:32:34

标签: python command-line windows-7 environment-variables

有时当我在Windows中更改环境变量,然后使用软件时,取决于这些变量,它们没有正确更新。

很好的例子是更改一个变量,然后打开Windows命令行并回显该变量并看到它没有被更改,即使你在Environment Variables窗口中正确地更改了它。

我正在处理的另一个例子:

我一直在为一个项目使用Python 2.4.x,它使用的值是env var 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 个答案:

答案 0 :(得分:2)

在“系统属性”选项卡中更改环境变量时,新值将传播到Windows资源管理器,并从Windows资源管理器(或“运行”框,“开始”菜单等)打开任何应用程序(如cmd.exe)。 。)应该看到新的价值。

但是,如果您正在运行编辑器或python等程序或某些非Microsoft程序启动程序,则更改环境变量,然后从该程序(而不是Windows资源管理器)启动cmd.exe查看环境变量的旧值。原因是正在运行的程序忽略了来自Windows的通知,指出环境已经发生了变化(并非完全不寻常),并且由于启动的进程继承了环境变量,因此子进程将看不到更改。

解决方法是确保从Windows资源管理器或“运行”框中启动应用程序。重新启动计算机也会起作用(如果重新启动无法解决问题,那么还会发生其他事情)。