使用pyenv可以很方便的切换python版本,而不会影响系统的python版本,对需要使用supervisor(仅支持python2)托管程序,项目使用python3开发的情况十分有用
pyenv的一些认识
- pyenv通过在系统路径PATH前添加shims目录来工作
ubuntu@VM-0-9-ubuntu:/srv/www/trader-log-gallery$ echo $PATH
/home/ubuntu/bin:/home/ubuntu/.local/bin:/home/ubuntu/.pyenv/shims:/home/ubuntu/.pyenv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
这样系统因为先找到pyenv预先shim到PATH前的路径,而执行pyenv安装的python,pip。
- 当我们使用pyenv local python-version 为当前目录指定python版本时,会在当前目录下生成一个.python-version的文件。
- pyenv将不同的python安装在 $(pyenv root)/versions/下
ubuntu@VM-0-9-ubuntu:/srv/www/trader-log-gallery$ ls ~/.pyenv/versions/ -l
total 8
drwxr-xr-x 6 ubuntu ubuntu 4096 Oct 17 17:42 2.7.12
drwxr-xr-x 6 ubuntu ubuntu 4096 Oct 22 16:13 3.6.6
pyenv的安装更新,ubuntu将bash_profile替换成bash_profile
sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev \
libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev \
xz-utils tk-dev libffi-dev
git clone https://github.com/pyenv/pyenv.git ~/.pyenv
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n eval "$(pyenv init -)"\nfi' >> ~/.bash_profile
exec "$SHELL"
使用pyenv安装python
- 查看可用的python版本号pyenv versions
- 安装指定版本的python,pyenv install 3.6.6
- 将某个版本设置为全局可用python global 3.6.6
- 设置当前目录的python版本python local 3.6.6