How to use pyenv to manage multiple python versions

pyenv lets you easily switch between multiple versions of Python. It’s simple, unobtrusive, and follows the UNIX tradition of single-purpose tools that do one thing well.

Installation

Way1: Manually

If you use bash as your shell, please change .zshrc to .bashrc

$ git clone git://github.com/yyuu/pyenv.git ~/.pyenv
$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
$ echo 'eval "$(pyenv init -)"' >> ~/.zshrc
$ exec $SHELL -l

Way2: Install by scripts

$ curl -L https://raw.githubusercontent.com/yyuu/pyenv-installer/master/bin/pyenv-installer | bash

Install Python by pyenv

Step1: Install build tools first

  • For Ubuntu
$ sudo apt install -y build-essential checkinstall libreadline-gplv2-dev \
libncursesw5-dev libssl-dev libsqlite3-dev tk-dev libgdbm-dev libc6-dev \
libbz2-dev zlib1g-dev openssl libffi-dev python3-dev python3-setuptools wget
  • For MaxOS
$ brew install zlib
$ export LDFLAGS="-L/usr/local/opt/zlib/lib"
$ export CPPFLAGS="-I/usr/local/opt/zlib/include"

Step2: Find available versions

$ pyenv install -l

Step3: Choose version you want to install

# exp. python-3.7.0
$ CFLAGS="-I$(xcrun --show-sdk-path)/usr/include" pyenv install 3.7.0

Step4: Switch to your version

$ pyenv global 3.7.0
$ pyenv rehash

Get all installed version

$ pyenv versions
# output:
  system
  2.7.10
* 3.7.0 (set by /Users/Vincent/.pyenv/version)