我这两天使用 Trae 想写一个自动获取github上某个软件最新版本的下载链接的功能。但总是遇到连接不上 Github API 的问题,问来问去最终发现都是代理的设置问题。而我其实已经在系统环境变量里设置了环境变量了。但在看到 Trae 检查时设置代理时用的变量名是大写,而我自己在 Windows 系统设置里设置的小写。我就疑惑了,这个玩意到底是应该大写还是小写,难道这个问题就是因为大小写造成的?
答案
- 应该始终使用大写 (
HTTPS_PROXY)。 - 同时设置 HTTP 和 HTTPS,即使你的代理 URL 本身是
http://。
因为虽然 PowerShell 和 Windows 操作系统本身在技术上对环境变量名不区分大小写,但使用这些变量的应用程序(如 Git、Python、cURL、Node.js 等)几乎都是区分大小写的。
- Windows/PowerShell 的行为:不区分大小写
- 在 PowerShell 中,如果你设置了
$env:httpss_proxy(小写),Windows 系统实际上会将其存储。 - 如果你接着读取
$env:HTTPS_PROXY(大写),PowerShell 仍然能读到你用小写设置的值。这就是 Windows 不区分大小写的表现。
- 在 PowerShell 中,如果你设置了
- 应用程序的行为:区分大小写(关键点)
HTTP_PROXY和HTTPS_PROXY(大写) 是一个源自 Unix/Linux 世界的“事实标准”(de facto standard)。- 绝大多数跨平台工具(包括 Python 的
requests库、Git、curl、wget、npm/yarn、Docker 等)被硬编码为只查找大写版本的环境变量。 - 结论: 如果你设置了
$env:httpss_proxy(小写),PowerShell 会知道它,但 Git、Python 等工具会完全忽略它,导致代理设置无效。
💡如何永久设置?
但上述设置只是临时的,最终还是要去设置系统级或者用户级的环境变量。
1. 按 Win 键。
2. 搜索 “编辑环境变量” (Edit environment variables)。
3. 选择 “编辑您的帐户的环境变量” (Edit environment variables for your account) 或 “编辑系统环境变量” (Edit system environment variables)。
4. 在 “用户变量” (User variables) 或 “系统变量” (System variables) 部分,点击 “新建...” (New...):
变量名: HTTPS_PROXY
变量值: http://127.0.0.1:7890
变量名: HTTPS_PROXY
变量值: http://127.0.0.1:7890
5. 点击 “确定” 保存。你需要重启所有已打开的终端或应用程序(有时甚至需要注销或重启电脑)才能使新设置生效。