🏞️ pyenv
Updated at 2019-01-26 22:09
pyenv
is a Python version management that make it easier to run multiple versions of Python on the same machine. It should be only used for development; not for production.
How to setup pyenv
on Mac with some optional parts if you have pre-existing Python:
# uninstall all previous versions of Python
brew list | grep python
brew uninstall --ignore-dependencies python@2
brew uninstall --ignore-dependencies python3
brew uninstall --ignore-dependencies python
# the next command should return nothing
brew list | grep python
# python executable should be the Apple default
python
# Python 2.7.10 (default, Feb 7 2017, 00:08:15)
# [GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.34)] on darwin
# uninstall everything that relied on those Python versions
brew uninstall ansible asciinema aws-sam-cli awscli awslogs
brew update
brew install pyenv
Usage:
# shows which Python versions are installed
pyenv versions
# shows which Python version is active
pyenv version
# shows which Python versions are available to download
pyenv install -l
# install what you want...
pyenv install -l | grep 2.7.
pyenv install 2.7.15
pyenv install -l | grep 3.6.
pyenv install 3.6.8
pyenv install -l | grep 3.7.
pyenv install 3.7.2
# enable shell integration, follow the insturctions
pyenv init
# define default Python
pyenv global 3.7.2
pyenv versions
# system
# 2.7.15
# 3.6.8
# * 3.7.2 (set by $HOME/.pyenv/version)
python --version # Python 3.7.2
which python # $HOME/.pyenv/shims/python
pyenv which python # $HOME/.pyenv/versions/3.6.8/bin/python
pip install virtualenv
pip list # pip, setuptools, virtualenv
# you can define what Python version are for each project (directory), even multiple
pyenv local 3.5.1 2.7.10
python3.5 --version
python2.7 --version
Bash Usage:
# enable Python with some virtualenv installed
export PYENV_VERSION=`pyenv whence virtualenv | tail -1`
# take latest Python that matches the target version
PYTHON_VERSION=3
PYTHON_EXE=python$PYTHON_VERSION
export PYENV_VERSION=`pyenv whence $PYTHON_EXE | tail -1`