Python Build

我的一个朋友问我,哪里有下载python的镜像源,我一直都是在是pypi下载,而且路由都已经翻墙,平时很少会碰到下载python慢的问题。不过在我们伟大的墙下,访问pypi.python.org确实会慢很多。

Pyenv

一般管理下载python除了brew还会用pyenv,推荐直接用pyenv安装python,这样就可以很方便的管理python版本。pyenv是可以设置PYTHON_BUILD_MIRROR_URL环境变量来加速下载python。添加之后也下载python会快很多,当然也要看mirror的位置,如果在github上也不会快到哪里。我都是用这个源http://pyenv.qiniudn.com/pythons,但是目前已经没人维护了。

然后我找到了淘宝python源,然后设置pyenv的mirror url环境变量,发现并没有任何作用。经过一番查找,在 pyenv issue 18知道了pyenv使用了python build。

Python Build

python build,看实现是把python包和sha256写入到配置文件,下载的时候通过sha256的值来获取python包,我写了个web sever证实了这一点。

当你使用pyenv安装python时,找不到python版本号会提示你更新pyenv,也就是git pull,更新的就是python build的映射文件。

我通过重定向讲下载跳转到具体的淘宝源url,pyenv可以成功下载。当然pyenv最终会比较下载的包的sha256的值,校验不通过依然会去python.org下载。

那么我们只需要把python build配置中的包名和sha256的值取出来做一个映射,就完全可以全部转发到淘宝镜像源了。具体怎么取偷个懒,毕竟这样的需求还真不多。或者在淘宝直接下载包放到pyenv的cache中,就可以直接安装了。