之前浏览文章的时候偶然看到了 asdf 这个项目,然后惊讶的发现它整合了我之前经常使用的 pyenv 还有不太常用的 jenv, nvm, rvm,通过这一个命令就可以实现,所以立马在机器上试了一下。

Install

安装的过程具体可以参考官网,这里不多展开,Mac 下可以使用 Homebrew, 不过个人还是偏好使用 git clone 安装:

git clone https://github.com/asdf-vm/asdf.git ~/.asdf

然后在 ~/.zshrc 中添加:

. $HOME/.asdf/asdf.sh

Plugin

asdf 通过插件的形式可以添加不同语言的支持。支持的所用插件可以在这里 看到。

asdf plugin add python

安装具体版本:

asdf list all python
asdf install python latest
asdf install python 3.6.1

设置版本

asdf global python 3.6.1
asdf shell python 3.6.1
asdf local python 3.6.1

在 sudo 中使用 asdf

使用 asdf 安装的环境都在用户目录下, 如果要在 sudo 中使用,则会报错 sudo: xxx command not found,因为 sudo 默认不会将用户的环境变量传递过去。如果要在 sudo 中使用,则需要手动指定 PATH:

sudo -E env "PATH=$PATH" [command] [options]

可以设置一个 alias:

$ alias mysudo='sudo -E env "PATH=$PATH"'

reference