Using Python Version Manager pyenv

pyenv is a lightweight, command-line tool that lets you easily install, manage, and switch between multiple versions of Python on your system—without interfering with the system Python. It's ideal for developers who need to test code across different Python versions or maintain isolated environments for different projects. pyenv supports per-project version settings, global defaults, and integrates with plugins like pyenv-virtualenv to manage virtual environments seamlessly.

✅ Why use pyenv?

  • Manage multiple Python versions cleanly without affecting system Python
  • Project-specific Python versions via .python-version files
  • Integrated plugin ecosystem (e.g., pyenv-virtualenv) for virtual env workflows

1. Install pyenv

  • Ensure OS build dependencies are installed (e.g., build-essential, libssl-dev, zlib-dev, etc.)

Add to shell init (~/.bashrc, ~/.zshrc):

export PATH="$HOME/.pyenv/bin:$PATH"
eval "$(pyenv init --path)"
eval "$(pyenv virtualenv-init -)"

Then reload your shell

Install via installer:

curl https://pyenv.run | bash

This includes pyenv, plus plugins like pyenv-virtualenv and pyenv-update

2. Install Python Version(s)

Install a specific version:

pyenv install 3.9.1

(Builds from source, may take a while)

List available versions:

pyenv install --list

3. Set Active Python Version

Scope Command Effect
Global pyenv global 3.9.1 Sets default Python for your user
Local pyenv local 3.9.1 Creates .python-version in current directory
Shell pyenv shell 3.9.1 Sets Python for the current shell session

Verify current version:

pyenv versions
python -V
which python

4. Create & Manage Virtual Environments (with pyenv-virtualenv)

Activate/deactivate manually:

pyenv activate myenv
pyenv deactivate
``` :contentReference[oaicite:25]{index=25}

Activate via directory:

pyenv local myenv

(automatically switches when entering the directory) (realpython.com)

Create a new virtualenv:

pyenv virtualenv 3.9.1 myenv
``` :contentReference[oaicite:20]{index=20}  

5. Tips & Help Commands

Update pyenv definitions:

pyenv update
``` :contentReference[oaicite:31]{index=31}

Uninstall a version:

pyenv uninstall 3.9.1
``` :contentReference[oaicite:29]{index=29}  

List all pyenv commands:

pyenv commands
``` :contentReference[oaicite:27]{index=27}