You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Win10下Python的os.environ环境变量无法即时更新,如何清除缓存?

在Win10中即时更新环境变量并清除进程缓存

问题背景

Win10系统中,通过以下命令设置用户级环境变量:

reg add HKCU\Environment /F /V http_proxy /d "http://127.0.0.1:8080"
reg add HKCU\Environment /F /V https_proxy /d "http://127.0.0.1:8080"

删除上述注册表项后,用set命令查看已无http_proxy,但运行Python脚本仍能输出旧值:

import os
print(os.environ['http_proxy'])
print(os.environ['https_proxy'])

执行结果依然显示旧代理地址,需解决环境变量即时更新及缓存清除问题。

核心原因

Windows环境变量采用进程继承机制:进程启动时会复制父进程的环境变量快照,后续系统级的环境变量变更不会自动同步到已运行的进程。此外,注册表修改后需通知系统刷新,否则新启动的进程可能仍读取旧缓存。

解决方案

  • 重启终端/IDE进程
    这是最简单直接的方法:关闭当前运行Python脚本的命令提示符、PowerShell或IDE(如VS Code、PyCharm),重新打开后再运行脚本。新进程会读取最新的注册表环境变量值,不会再出现旧值。

  • 手动触发系统环境变量刷新
    若不想重启终端,可通过PowerShell发送系统消息强制刷新环境变量,同时清除注册表项:

    reg delete HKCU\Environment /V http_proxy /F
    reg delete HKCU\Environment /V https_proxy /F
    powershell -Command "$sig = '[DllImport(`"user32.dll`")] public static extern bool SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);'; Add-Type -MemberDefinition $sig -Name NativeMethods -Namespace Win32; [Win32.NativeMethods]::SendMessage([IntPtr]0xffff, 0x001A, [IntPtr]0, [IntPtr]0)"
    

    执行后,新开终端即可读取更新后的环境变量;若要在当前终端生效,需先关闭再重新打开。

  • 临时清除Python进程内的环境变量
    仅针对当前Python进程生效,无需重启终端或系统,在脚本开头添加以下代码:

    import os
    # 清除进程内的代理变量
    for proxy_key in ['http_proxy', 'https_proxy']:
        if proxy_key in os.environ:
            del os.environ[proxy_key]
    # 后续业务代码
    print(os.environ.get('http_proxy', '变量已清除'))
    print(os.environ.get('https_proxy', '变量已清除'))
    

内容的提问来源于stack exchange,提问作者wgf4242

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 15:56:17