休闲

pip3 设置代理服务器

时间:2010-12-5 17:23:32  作者:知识   来源:百科  查看:  评论:0
内容摘要:```html pip3 设置代理服务器 公司内网把 pypi.org 给墙了,`pip3 install requests` 直接卡住不动,最后甩出一个 timeout。这种事我碰到过三

```html pip3 设置代理服务器

公司内网把 pypi.org 给墙了,置代`pip3 install requests` 直接卡住不动,理服最后甩出一个 timeout。置代这种事我碰到过三次,理服每次都是置代因为换了办公区,代理地址变了。理服别指望 pip 会弹个友好的置代提示告诉你“请设置代理”,它只会默默超时,理服然后你对着终端发呆。置代

最直接的理服办法是临时指定代理,一行命令搞定:

pip3 install requests --proxy=http://127.0.0.1:7890

这里 `http://` 后面跟的置代是代理服务器的地址和端口。注意,理服即使你要访问的置代是 https 的 pypi,代理地址本身也通常写成 `http://`,理服因为那是置代你本地代理客户端监听的协议。我见过有人写成 `https://127.0.0.1:7890`,结果 pip 报 SSL 错误,折腾半天。如果你用的是 socks5 代理,比如某些科学上网工具,那就得写 `socks5://127.0.0.1:1080`。但 pip 对 socks5 的支持要看版本,老版本可能不认,会提示 `Missing dependencies for SOCKS support`。这时候要么升级 pip,要么装个 `pysocks`。

临时方案只适合偶尔用一次。天天这么敲,手指头累。永久设置更省心。pip 的配置文件位置分平台:Linux 和 macOS 在 `~/.pip/pip.conf` 或者 `~/.config/pip/pip.conf`,Windows 在 `%APPDATA%\pip\pip.ini`。我习惯用 `pip3 config` 命令来改,不容易搞错路径。

pip3 config set global.proxy http://127.0.0.1:7890

执行完,它自动写进配置文件。想确认一下?`pip3 config list` 就能看到。取消代理也简单:

pip3 config unset global.proxy

但这里有个坑。如果你同时设置了 `global.index-url` 指向国内镜像源,比如清华的 tuna,那代理可能反而添乱。因为镜像源在国内,直连速度飞快,走代理绕一圈反而慢。我自己的习惯是:公司内网强制走代理时,才开全局代理;在家或者用镜像源时,把代理关掉。别让两个配置打架。

还有一种情况:代理需要认证。比如公司代理要求用户名密码。格式是这样的:

http://user:password@proxy.server.com:8080

密码里如果有特殊字符,比如 `@` 或 `:`,得用 URL 编码转义,否则 pip 解析会出错。我遇到过密码带 `@` 的,直接写进去,pip 把 `@` 后面的当成了主机名,报错说找不到主机。后来把 `@` 换成 `%40` 才通过。这种细节,文档里不会写,只有踩过坑才知道。

Windows 用户注意了,如果你在 PowerShell 里用 `pip3`,有时候会提示找不到命令。那是因为 Windows 上通常只有 `pip`,没有 `pip3`。别纠结,直接用 `pip` 就行,它对应的就是 Python3 的 pip。除非你系统里同时装了 Python2 和 Python3,那 `pip3` 才明确指向 Python3。我见过有人在 Windows 上死磕 `pip3`,最后发现是 PATH 里没有。

另外,环境变量也能设代理。`HTTP_PROXY` 和 `HTTPS_PROXY` 这两个变量,pip 会读。但我不推荐这么干,因为会影响其他命令行工具,比如 curl、wget。你设了全局代理,结果访问内网服务也走代理,直接 502。pip 自己的配置文件只影响 pip,干净。

最后说一个我实际踩过的坑:代理地址写成了 `http://127.0.0.1:7890/`,末尾多了一个斜杠。pip 没报错,但就是连不上。删掉斜杠就好了。这种问题查起来很烦,因为日志里看不出明显异常。所以写地址时,别手贱加斜杠。

差不多就这些。设置代理本身不复杂,但细节决定成败。下次再遇到 pip 卡住,先 `pip3 config list` 看一眼,八成是代理没配对或者配冲突了。

```
最近更新
热门排行
copyright © 2026 powered by 力不从心网   sitemap