pyenv
pyenv is a free, MIT-licensed tool for switching between Python versions on Linux/Unix-like systems and macOS.
What pyenv is
pyenv is a free, MIT-licensed tool for switching between Python versions on Linux/Unix-like systems and macOS. It can set a global version for a user, select versions by project, or apply an override through an environment variable. It supports CPython, PyPy, Stackless Python, Jython, and other distributions, and can keep multiple installations available at once, including for cross-version testing with tox. Shim executables on PATH intercept Python commands and route them to the selected installation. Most Python releases provided through pyenv are built from source during installation, so Python build dependencies must be installed first. The project documents Linux/Unix and macOS installation through a shell installer, Git checkout, or Homebrew, and allows functionality to be extended with plugins. pyenv does not manage virtual environments itself; its project points users to virtualenv or the pyenv-virtualenv plugin for that purpose. It does not officially support Windows outside Windows Subsystem for Linux and recommends pyenv-win for native Windows Python versions.
Good
- Supports global, per-project, and environment-variable overrides.
- Supports several Python distributions, including CPython and PyPy.
- Multiple installed versions can remain available at once.
- Plugins can extend or customize functionality.
Watch out
- Does not manage virtual environments itself.
- Most releases are built from source and need build dependencies.
- Windows support is limited to Windows Subsystem for Linux.
Who it suits
pyenv suits developers who need to switch among Python versions on Linux/Unix-like systems or macOS. It is also useful when multiple Python distributions or project-specific versions are needed.
Verdict
pyenv handles Python version selection across users, projects, and distributions. Users needing virtual environments must use another tool or plugin, and native Windows users are directed to pyenv-win.
Plans and prices
From pyenv's own pricing page, checked 5 Oct 2026.
| Plan | Price | What it gives you |
|---|---|---|
| pyenv | Free | MIT-licensed open-source project · no paid plans or pricing stated |
The facts
Each one read from pyenv's own pages, with the date it was checked.
What it does
- Builds
- Most pyenv-provided Python releases are built from source during installation, and Python build dependencies must be installed first.checked 5 Oct 2026
- Distributions
- It supports CPython, PyPy, Stackless Python, Jython, and other Python distributions.checked 5 Oct 2026
- Installation
- The README documents installation on Linux/Unix and macOS, including a shell installer, Git checkout, and Homebrew.checked 5 Oct 2026
- License
- The repository identifies pyenv as MIT licensed.checked 5 Oct 2026
- Multiple versions
- Users can make multiple installed Python versions available at once, including for cross-version testing with tox.checked 5 Oct 2026
- Plugins
- The project supports extending and customizing functionality with plugins.checked 5 Oct 2026
- Purpose
- pyenv lets users switch between multiple Python versions.checked 5 Oct 2026
- Security
- The v2.8.0 changelog lists a fix for CVE-2026-68939 involving glob character handling in .python-version.checked 5 Oct 2026
- Shims
- It intercepts Python commands through shim executables added to PATH and routes them to the selected installation.checked 5 Oct 2026
- Version selection
- It supports global per-user and per-project Python versions, plus overrides through an environment variable.checked 5 Oct 2026
- Virtual environments
- pyenv does not manage virtual environments itself; the project points users to virtualenv or the pyenv-virtualenv plugin.checked 5 Oct 2026
Where it runs
- Windows support
- The project says it does not officially support Windows and does not work outside Windows Subsystem for Linux; it recommends the pyenv-win fork for native Windows Python versions.checked 5 Oct 2026

