- Published on
Managing Python versions and virtual environments using pyenv
- Authors
- Name
- Tails Azimuth
- Name
- Sparrow Hawk
- @sparrowhawk
The pyenv package is a very useful tool for managing multiple versions of Python, without too much hassle. It also comes with various plugins for streamlining the development experience, including pyenv-virtualenv, which provides features for managing virtual environments and conda environments.
Unfortunately,
pyenvis not supported on Windows. However, we recommend using thepyenv-winfork for Windows users.
Installing pyenv
1. Install required Python build dependencies
Mac OS X
brew install openssl readline sqlite3 xz zlib
Ubuntu/Debian/Mint
sudo apt-get update; sudo apt-get install make build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm \
libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev
Alpine
apk add --no-cache git bash build-base libffi-dev openssl-dev bzip2-dev zlib-dev readline-dev sqlite-dev
2. Installing pyenv
The fastest way to install pyenv and some of popular plugins is to use the pyenv-installer:
curl https://pyenv.run | bash
Next up, restart your shell so the path changes take effect:
exec $SHELL
3. Updating pyenv
Updating pyenv is as simple as:
pyenv update
4. Switching between Python versions
pyenv local 3.3.3- Sets Python 3.3.3 in the local shell.pyenv global 2.7.3- Sets Python 2.7.3 globally, in all shells.
5. Managing virtual environments and Python versions
pyenv virtualenv 3.3.3 virtual-env-name- Creates a virtual environment calledvirtual-env-namethat uses Python 3.3.3pyenv virtualenvs- Shows the created virtual environments.pyenv activate virtual-env-name- Activates the virtual environment with thevirtual-env-namename.pyenv deactivate- Deactivates the currently activated virtual environment.
Uninstalling pyenv
The pyenv executable is installed in $PYENV_ROOT, which defaults to ~/.pyenv. To uninstall it, just simply remove it:
rm -fr ~/.pyenv
Then clean up your .bashrc file, by removing the following lines from it:
export PATH="$HOME/.pyenv/bin:$PATH"
eval "$(pyenv init --path)"
eval "$(pyenv virtualenv-init -)"
Conclusion
In this article we've learned how simple and easy it is to use pyenv and its related plugins for managing multiple versions of Python and virtual environments from a single machine.