给zsh来把翻墙弹椅
起因是要安装一个基于Python的命令行工具gitsome 。过程相当傻瓜,利用 pip 即可一步安装:
$ pip install gitsome
然鹅,运行gitsome
后提示本地python版本可以入土了。
事实上,为了以防万一,本地系统配备了2.7和3.7两个版本,只不过系统环境变量是2.7。
安装pyenv
如何管理多版本的python呢?首先想到了借助热门方案-pyenv
工具:
$ brew install pyenv
配置脚本文件,将下列代码写入.zshrc
末尾
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
if which pyenv > /dev/null;
then eval "$(pyenv init -)";
fi
之后生效配置:
$ source ~/.zshrc
开始用pyenv管理python
$ pyenv versions # 查看本机安装版本
$ pyenv install 3.7.3 # 安装 python
$ pyenv uninstall 3.7.3 # 卸载 python
$ pyenv install -l #查看可安装 Python 版本
然鹅,运行下列命令,严重怀疑被墙了。
pyenv install 3.7.3
既然如此,给终端来一把翻墙弹椅吧。
为zsh配置socks代理开关
由于有现成的ShadowsocksX-NG-R ,只需要挖掘一个代理端口即可。
修改zsh设置文件
$ vim ~/.zshrc
在末尾写入如下代码:
# where need proxy
proxy () {
export http_proxy="socks5://127.0.0.1:1086"
export https_proxy="socks5://127.0.0.1:1086"
echo "Socks Proxy on"
}
# where need noproxy
noproxy () {
unset http_proxy
unset https_proxy
echo "Socks Proxy off"
}
之后生效配置:
$ source ~/.zshrc
或者直接设置alias
alias setproxy="export ALL_PROXY=socks5://127.0.0.1:1086"
alias unsetproxy="unset ALL_PROXY"
验证一下,成功!
$ curl myip.ipip.net # 或者curl cip.cc
当前 IP:149.129.87.244 来自于:中国 香港 阿里云
设置python优先级
一直觉得Python多版本管理是个令人头痛的烫手山芋,但是有了pyenv后,可以轻松通过global、local、shell来切换优先级。切换后可通过which python或者是python –version来查看是否生效。三者的优先级如下:
shell > local > global
说明:pyenv 会从当前目录开始向上逐级查找.python-version
文件,直到根目录为止。若找不到,就用global版本。
$ pyenv global 3.7.3
说明:设置全局的 Python 版本,通过将版本号写入 ~/.pyenv/version 文件的方式。
$ pyenv local 3.7.3
说明:设置 Python 本地版本,通过将版本号写入当前目录下的 .python-version 文件的方式。通过这种方式设置的 Python 版本优先级较 global 高。
尾声
原以为「万事俱备,只欠东风」。然鹅,即便开启了代理安装还是失败了。不死心地放狗搜了一圈,才发现跟GFW无关,原来是特定macOS版本下pyenv的Bug:pyenv install fails to build 2.7.14 with ImportError: No module named pyexpat ,升级Macos可解,重新来一遍就好了。