代码之家  ›  专栏  ›  技术社区  ›  Jake Wilson

打开命令行时Windows环境变量是否发生更改?

  •  1
  • Jake Wilson  · 技术社区  · 14 年前

    有时,当我在Windows中更改环境变量,然后使用依赖于这些变量的软件时,这些变量没有得到正确的更新。

    好的例子是更改一个变量,然后打开Windows命令行并回送该变量,即使您在“环境变量”窗口中正确地更改了它,也会看到它没有被更改。

    我现在处理的另一个例子是:

    我使用python 2.4.x已经有一段时间了,这个项目使用env变量 PYTHONPATH 谁的价值是:

    C:\Python24;C:\Python24\lib
    

    今天我为这个项目安装了python 2.5.x。我把我的便秘改成:

    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)
    

    很明显,老 Python路径 环境变量的变化并不是一成不变的……

    有人知道为什么会发生这种情况以及如何解决它吗?

    1 回复  |  直到 14 年前
        1
  •  2
  •   jdigital    14 年前

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

    但是,如果您正在运行一个程序,如编辑器、Python或一些非Microsoft程序启动程序,那么更改一个环境变量,然后从该程序(而不是Windows资源管理器)启动cmd.exe,您可能会看到环境变量的旧值。原因是正在运行的程序忽略了来自Windows的通知,该通知表示环境已更改(一点也不异常),并且由于启动的进程继承了环境变量,子进程将看不到这些更改。

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