让 pip 通过代理安装
为一次 pip 命令传入代理,检查配置优先级,并修复证书信任,而不是把 trusted-host 当作代理问题的常规绕过方法。
单次安装时,pip 可以直接接受命令行中的代理。无需写入永久用户或系统配置文件,就能尝试一条路由:
python -m pip --proxy http://203.0.113.10:8080 install requests
用服务商或HTTP 代理列表中选出的端点替代文档示例 IP。运行 python -m pip 也能更明确地指定 Python 环境,而不必假定独立的 pip 可执行文件属于该环境。
代理 URL 描述的是代理连接。它可以以 http:// 开头,而软件包索引和下载仍通过CONNECT 使用 HTTPS。
如果 pip 一直选择另一项设置
对于 pip 自身的选项,命令行参数优先于环境变量,环境变量又优先于配置文件。相关文件可能位于全局、用户或虚拟环境层级。PIP_CONFIG_FILE 可以选择一个额外的配置文件。
python -m pip config debug
这会列出 pip 考虑的配置来源。请在本地查看:文件或环境值中可能包含私有 URL 或凭据。
还要检查 PIP_PROXY 和普通的 HTTP/HTTPS 代理环境变量。它们并不全在同一配置层;排查实际网络路由时,标准代理环境处理仍可能有影响。不要认为删掉用户文件中的一条记录就移除了所有可能来源。
代理选项不能修复证书信任
如果路由到达 HTTPS 服务但验证失败,应查明客户端实际收到了哪个证书。经授权的检查环境可能需要获准的 CA 证书包:
python -m pip --proxy http://203.0.113.10:8080 \
--cert /path/to/approved-ca-bundle.pem install requests
--trusted-host 会把主机标记为受信任,即使没有有效 HTTPS。它不设置代理 IP,也不应成为证书错误的常规处理方式。应改为修正端点或信任配置。
pip 24.2 在受支持的运行环境中,默认同时使用系统证书和 certifi。较早的 pip 不会自动使用操作系统的 CA 存储。这一差异可能解释为什么获准的组织 CA 在一个 Python 环境中可用,却在另一个环境中缺失。
单次命令的代理参数会在命令结束后失效。如果之后保存持久代理设置,应放在真正需要的作用范围内,不要让每个 Python 环境都依赖一个原本仅用于测试的端点。