Conda 能通过代理下载,pip 却不行
比较两个客户端的代理与证书配置,不要以为激活 Conda 环境就会把所有网络设置复制给 pip。
激活 Conda 环境只是选择一个环境,并不会让其中每个程序都使用 Conda 的配置。Conda 和 pip 是两个独立的下载客户端。
Conda 可以在 .condarc 中配置代理路由:
proxy_servers:
http: http://203.0.113.10:8080
https: http://203.0.113.10:8080
这些示例值告诉 Conda 如何访问各协议方案的目标。pip 不会仅仅因为安装在该环境里,就自动采用 proxy_servers 映射。
检查两套配置
检查Conda 的配置来源,以及当前 Python 所关联的 pip:
conda config --show-sources
python -m pip --version
python -m pip config debug
输出可能显示不同的配置位置、意料之外的解释器,或某次测试未使用的环境变量。分享前先检查其中的私有 URL 和凭据。
对于 pip,请使用文档规定的代理选项、pip 专用配置,或适当的网络环境设置。不要把 .condarc 的 YAML 段直接复制到 pip 的 INI 文件中。
信任设置同样独立
Conda 的 ssl_verify 可以指定 CA 证书包,也可以在支持的版本和 Python 运行时中,通过 truststore 选择系统信任。它并不是配置 pip 信任来源的命令。
如果代理执行获准的 TLS 检查,应分别确认两个客户端如何信任该证书颁发机构。Conda 请求成功,只证明它自己的路由和信任设置对该请求有效,并不能证明 pip 获得了相同设置。
比较实际目标
两个客户端可能使用不同的软件包索引和文件主机。允许某个频道的中间设备,可能拒绝另一个索引或后续的归档文件 URL。在仅将差异归因于所选 Python 环境前,先检查失败的主机名和响应。
有用的报告应指出解释器、各客户端的配置来源、请求的主机,以及首个连接或证书错误。“Conda 能用”只是比较的起点,不是对 pip 网络路径的完整测试。