如何加速Pyenv
通过pyenv是安装python的最好的方法,从而避免很多环境上的坑。但是由于国内网络环境原因,pyenv在python.org下载很慢,所以就需要对pyenv设置代理,以加快下载速度。之前有写过一篇文章来介绍pyenv的python build。那么我们来说一下还有什么办法来加速pyenv。
使用http_proxy加速
pyenv下载python安装包使用的是http协议,那么我们可以使用http proxy来加速,直接设置shell的http_proxy环境变量即可。或者安装shadowsocksX-NG桌面端软件(该软件只适用于MacOS,其他平台在组织的其他项目中)并打开全局代理。
该方法需要你有一个代理服务器,门槛比较高。如果有你有代理服务器,我更推荐将代理部署在路由器中,来获得最好的体验。这些是后话,今后我会花时间来写一下。
搭建代理服务器访问如何科学上网。
使用PYTHON_BUILD_MIRROR_URL加速
这是pyenv支持的环境变量,由于部署在七牛的mirror不在维护,目前只能使用github pages上部署的一个mirror了,不过github也比较慢,所以并没有什么效果。
有条件的可以使用国内的CDN或者服务器部署自己的mirror,项目在yyuu.github.com,需要自己跑脚本更新python的版本。
这种方法成本较高,并且国内没人维护。
手动下载加速
国内有python镜像站,像是淘宝源,手动下载相应版本并移动到~/.pyenv/cache/
下,如果没有该文件,请手动创建。
然后使用pyenv进行安装即可,是不是很方便。那么可以自动化吗?
最完美加速
因为之前看过python build,了解过机制后写了一个代理,项目地址:pyenv-proxy
利用这个,就可以直接在淘宝源下载python了,不过pypy和miniconda等目前还不支持。为了大家方便,我在自己的腾讯云搭建了一个代理服务器,可以直接配置使用,接下来我会用WebAssembly部署到cloudflare的workers上。
配置如下:
1 | export PYTHON_BUILD_MIRROR_URL="http://140.143.140.234" |
不过有个小缺憾,目前我只拿出了tar.gz的包哈希,tar.xz的还没支持,所以需要修改源码了,使用vim ~/.pyenv/plugins/python-build/bin/python-build
打开文件,定位到has_tar_xz_support
方法。将返回值置位false就可以使用了。在后续的优化中,我会解决这个问题。
更新
请看最新的加速方案在Cloudflare Workers上部署Pyenv-proxy