在国内,用 pip 安装 python 依赖包的时候,总是会遇到 Timeout 或者下载太慢的问题。
这是因为 pip 源在国外,那么解决方法就是把 pip 源改成国内的,就可以实现 pip install 加速。
1. 国内有哪些 pip 源?
国内有几个名气比较大的源:
- 清华大学 https://pypi.tuna.tsinghua.edu.cn/simple/
- 豆瓣 http://pypi.douban.com/simple/
- 阿里云 http://mirrors.aliyun.com/pypi/simple/
- 中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/
- 中国科学技术大学 http://pypi.mirrors.ustc.edu.cn/simple/
个人这几年使用下来,偏向于使用清华的源,比较稳定。
2. 怎么加速?
答案前面已经说了,就是修改 pip 源,主要有两种方式:
- 每次安装的时候,手动指定国内的 pip 源。
- 修改本地的 pip 配置文件,默认为国内的 pip 源。
2.1 手动指定 pip 源
这里举了个例子:从清华的 pip 源下载 pandas 包。
pip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple
- 好处:不必修改本地的 pip 配置文件。
- 坏处:每次都要在 pip install 后面添加老长一些代码。
有些公司内部是会维护自己的 pip 源的,上面放了一些内部专用的依赖包,而员工电脑本地的 pip 配置文件一般已经指向公司内部 pip 源。
有时候出于稳定性和速度的考虑,可能还是会用到这种安装方式。
但绝大多数时候,还是建议修改本地的 pip 配置文件。
2.2 修改本地的 pip 配置文件
2.2.1 pip 配置文件在哪里?
对于不同操作系统,pip 配置文件的路径和名称不太相同,甚至同一类操作系统,有可能因为版本不一样(如 win7 和 win XP)也会导致路径不一样,所以要根据自身情况寻找 pip 配置文件的有效路径。
这里列了一些配置文件的路径,如果路径不存在,则需要自己先新建,然后再添加配置文件。
Linux/Unix
- /etc/pip.conf
- ~/.config/pip/pip.conf
- ~/.pip/pip.conf
Mac
- ~/.pip/pip.conf
- ~/Library/Application Support/pip/pip.conf
Windows
- %USERPROFILE%\pip\pip.ini
- %APPDATA%\pip\pip.ini
- %HOME%\pip\pip.ini
虚拟环境
- 在Unix和macOS上,文件为:$VIRTUAL_ENV/pip.conf
- 在Windows上,文件为: %VIRTUAL_ENV%\pip.ini
2.2.2 pip 配置文件的优先级
如果 pip 配置文件有很多个,则按照如下顺序读取配置:
- 读取站点范围(site-wide)的配置,这里指全局配置。
- 读取每个用户目录的配置。
- 读取特定于虚拟环境的配置。
也就是说,如果这些位置都有配置文件,则后面读取的值会覆盖前面读取的值。
2.2.3 pip 配置文件的内容?
下面是我自己的配置。
[global]
timeout = 120
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
trusted-host = pypi.tuna.tsinghua.edu.cn
[search]
index = https://pypi.tuna.tsinghua.edu.cn/simple
简单解释一下里面的参数:
- timeout:超时时间为120秒,避免因为短暂的阻塞而导致下载失败,这个值设得太长也没意义,还不如尽早重试或换一个源。
- index-url:清华源,pip install 时下载的地方。
- trusted-host:添加清华源为可信主机,要不然可能报错。
一般来说这样的配置文件就足够用了,如果想知道更多配置详情,可以参考官方教程:https://pip.pypa.io/en/stable/user_guide/