pyenv
What it is
pyenv is a free, MIT-licensed tool for selecting among multiple Python versions on Linux, Unix-like systems, and macOS. It can set a global per-user version, a project-specific version, or an environment-variable override. Supported distributions include CPython, PyPy, Stackless Python, Jython, and others. Multiple installed versions can remain available simultaneously, including for cross-version testing with tox. Shim executables placed on PATH intercept Python commands and route them to the chosen installation. Most Python releases supplied through pyenv are built from source, so Python build dependencies must be installed first. Installation documentation covers a shell installer, Git checkout, and Homebrew. Plugins can extend or customize the tool. pyenv does not manage virtual environments itself; its project points users to virtualenv or the pyenv-virtualenv plugin. The project says Windows is not officially supported outside Windows Subsystem for Linux and recommends pyenv-win for native Windows versions.
For and against
For
- Supports project and global version selection
- Handles multiple Python distributions
- Keeps several versions available together
- Supports plugins and shell integration
- Free and MIT licensed
Against
- Does not officially support native Windows
- Builds most releases from source
- Requires separate virtual-environment tooling
- Python build dependencies must be installed
The verdict
pyenv provides focused Python version selection with project pinning and automatic switching. Users on unsupported Windows setups or needing built-in virtual environments need additional tools.
Who it suits
pyenv suits developers who need several Python distributions or versions for projects, per-user settings, or compatibility testing. It is intended for Linux, Unix-like systems, and macOS users.
Plans and prices
pyenv
MIT-licensed open-source project · no paid plans or pricing stated
Read 5 Oct 2026 · github.com
On the record
- Builds
- Most pyenv-provided Python releases are built from source during installation, and Python build dependencies must be installed first.github.com · read 5 Oct 2026
- Distributions
- It supports CPython, PyPy, Stackless Python, Jython, and other Python distributions.github.com · read 5 Oct 2026
- Installation
- The README documents installation on Linux/Unix and macOS, including a shell installer, Git checkout, and Homebrew.github.com · read 5 Oct 2026
- License
- The repository identifies pyenv as MIT licensed.github.com · read 5 Oct 2026
- Multiple versions
- Users can make multiple installed Python versions available at once, including for cross-version testing with tox.github.com · read 5 Oct 2026
- Plugins
- The project supports extending and customizing functionality with plugins.github.com · read 5 Oct 2026
- Purpose
- pyenv lets users switch between multiple Python versions.github.com · read 5 Oct 2026
- Security
- The v2.8.0 changelog lists a fix for CVE-2026-68939 involving glob character handling in .python-version.github.com · read 5 Oct 2026
- Shims
- It intercepts Python commands through shim executables added to PATH and routes them to the selected installation.github.com · read 5 Oct 2026
- Version selection
- It supports global per-user and per-project Python versions, plus overrides through an environment variable.github.com · read 5 Oct 2026
- Virtual environments
- pyenv does not manage virtual environments itself; the project points users to virtualenv or the pyenv-virtualenv plugin.github.com · read 5 Oct 2026
- 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.github.com · read 5 Oct 2026