【问题标题】:Windows environment variables change when opening command line?打开命令行时Windows环境变量发生变化?
【发布时间】:2021-03-10 18:07:46
【问题描述】:

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

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

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

我在一个项目中使用 Python 2.4.x 已经有一段时间了,它使用了 env var PYTHONPATH who's value has been:

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 环境变量更改并没有真正坚持......

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

【问题讨论】:

  • 让我确定我理解这个顺序。您更改环境变量。然后打开一个新的命令提示符窗口。并且变量的值不变?奇怪的。我刚试过这个,变量在新窗口中显示新值。
  • 只是好奇,您是否将其添加到 [用户名] 的用户变量或系统变量部分?

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


【解决方案1】:

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

但是,如果您正在运行诸如编辑器或 python 或某些非 Microsoft 程序启动器之类的程序,则更改环境变量,然后从该程序(而不是 Windows 资源管理器)启动 cmd.exe,您很可能查看环境变量的旧值。原因是正在运行的程序忽略了来自Windows的通知,说环境发生了变化(一点也不异常),并且由于启动的进程继承了环境变量,所以子进程不会看到变化。

解决方法是确保您从 Windows 资源管理器或“运行”框启动应用程序。重新启动您的机器也可以工作(如果重新启动不能解决问题,那么会发生其他事情)。

【讨论】:

    猜你喜欢
    • 2010-09-24
    • 1970-01-01
    • 2021-07-09
    • 2011-01-26
    • 2021-12-26
    • 2018-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多