pip install 一个不大的包,卡在 collecting 十分钟不动,最后超时。开个新窗口再试,还是老样子。这种时候换国内镜像,比反复重试有效得多。
临时用一次
在安装命令后面加 -i 和镜像地址,只对这一次生效:pip install 包名 -i https://mirrors.aliyun.com/pypi/simple/ 。验证效果最直接,装完再去决定要不要长期配。地址末尾那个 simple 是索引约定,别漏掉斜杠。
写进配置,长期生效
执行 pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/ ,它会把这一项写进配置文件,之后所有安装都走这个源。用 pip config list 能看到当前的配置项,想改回来执行 pip config unset global.index-url。
配置文件的位置分系统:Windows 在用户目录里 AppData 下的 Roaming,里面的 pip 文件夹中的 pip.ini;Linux 和 macOS 一般在用户目录下的 .config/pip/pip.conf,全局配置在 etc 下的 pip.conf。改完不必重启终端,新开的窗口就生效。
公司电脑如果配了多个环境的虚拟环境,配置会跟着用户走,不跟着项目走。想让某个项目单独用别的源,可以在项目目录放一个 pip.ini,优先级更高。
换源解决不了的那些报错
下载快不等于装得上。提示找不到匹配的版本,多半是这个包不支持你当前的 Python 版本,或者只有源码包需要编译,缺编译器就会失败。Windows 上编译失败的经典报错里会提到 Visual C++ 构建工具,装一遍构建工具就好,跟源没关系。
还有依赖冲突,装 A 时把 B 的版本降了,跑起来报缺函数。这种要看冲突报告里谁要求的版本不一致,用 pip 的 dry-run 先看一遍要装什么,别直接按回车。
什么时候别用镜像
内网环境有自己的私有源,配了阿里源反而连不上,这种机器要按公司文档配内部地址。另外镜像同步有延迟,刚发布几分钟的包可能还查不到,等一会儿再试。
我的做法是:家里电脑配阿里源省时间,服务器上按项目固定源并写进依赖文件,谁部署都一样,省得下次又为环境问题吵半天。