Warm tip: This article is reproduced from serverfault.com, please click

python-Windows环境变量在打开命令行时发生变化?

(python - Windows environment variables change when opening command line?)

发布于 2010-06-03 04:32:34

有时,当我在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环境变量更改并没有真正保留。

有谁知道为什么会这样以及如何解决?

Questioner
Jake Wilson
Viewed
0
jdigital 2010-06-03 13:01:02

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

但是,如果你正在运行诸如编辑器,python或某些非Microsoft程序启动器之类的程序,则更改环境变量,然后从该程序(而不是Windows资源管理器)中启动cmd.exe,你可能会看到环境变量的旧值。原因是正在运行的程序忽略了Windows发出的有关环境已更改的通知(一点也不奇怪),并且由于启动的进程继承了环境变量,因此子进程将看不到更改。

解决方法是确保从Windows资源管理器或“运行”框启动应用程序。重新启动计算机也可以(如果重新启动不能解决问题,则说明有其他事情发生)。