# pyenv/pyenv

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/pyenv-pyenv).**

44,299 stars · 3,239 forks · Shell · mit

## Links

- GitHub: https://github.com/pyenv/pyenv
- awesome-repositories: https://awesome-repositories.com/repository/pyenv-pyenv.md

## Topics

`python` `shell`

## Description

This project is a command-line tool designed to manage multiple isolated language runtime versions on a single development machine. It enables users to install, switch between, and maintain different runtime versions, ensuring that project-specific requirements are met without conflicting with system-wide software.

The tool distinguishes itself through a shim-based execution environment that intercepts system calls and dynamically routes them to the correct runtime version based on the current directory. By traversing the file system hierarchy to locate configuration files, it automatically applies the appropriate environment for each project. It also supports source-based compilation, allowing users to build runtimes directly on their host operating system to ensure compatibility and meet specific performance needs.

Beyond core version management, the project provides a modular plugin architecture that supports custom command authoring and community-maintained extensions. This framework facilitates a wide range of tasks, including build process configuration, dependency migration, and integration with virtual environment tools. It also includes built-in diagnostic utilities to assist with troubleshooting common installation issues, such as dependency management and library configuration conflicts.

The software is designed for UNIX-like systems and is configured by initializing the shell environment to prioritize managed shim directories.

## Tags

### Programming Languages & Runtimes

- [Runtime Version Managers](https://awesome-repositories.com/f/programming-languages-runtimes/runtime-version-managers.md) — Manages multiple language runtime versions on a single machine to support diverse project requirements.
- [Version Managers](https://awesome-repositories.com/f/programming-languages-runtimes/version-managers.md) — Manages project-specific runtime versions by automatically detecting configuration files in the current directory. ([source](https://github.com/pyenv/pyenv/blob/master/COMMANDS.md))
- [Shim Execution Environments](https://awesome-repositories.com/f/programming-languages-runtimes/shim-execution-environments.md) — Intercepts system calls and dynamically routes them to the appropriate language version based on the current directory.
- [Version Isolation Environments](https://awesome-repositories.com/f/programming-languages-runtimes/version-isolation-environments.md) — The version manager installs and configures multiple isolated runtime versions on a single system to support switching between different environments for various projects. ([source](https://github.com/pyenv/pyenv#readme))
- [Environment Isolation Tools](https://awesome-repositories.com/f/programming-languages-runtimes/environment-isolation-tools.md) — Automatically applies the correct language version based on the current directory to ensure project isolation.
- [Runtime Installers](https://awesome-repositories.com/f/programming-languages-runtimes/runtime-installers.md) — Compiles and installs specific versions of a runtime on UNIX-like systems. ([source](https://github.com/pyenv/pyenv/blob/master/plugins/python-build/README.md))
- [Session-Based Version Switching](https://awesome-repositories.com/f/programming-languages-runtimes/session-based-version-switching.md) — The version manager sets or displays the runtime version for the current shell session to provide a temporary override for local and global configurations. ([source](https://github.com/pyenv/pyenv/blob/master/COMMANDS.md))
- [Shim Management Systems](https://awesome-repositories.com/f/programming-languages-runtimes/shim-management-systems.md) — Modifies the shell path to prioritize managed shims, enabling seamless runtime version switching.
- [Execution Interception Tools](https://awesome-repositories.com/f/programming-languages-runtimes/execution-interception-tools.md) — Intercepts system calls via lightweight proxy binaries to route commands to the correct runtime version.
- [Source-Based Build Tools](https://awesome-repositories.com/f/programming-languages-runtimes/source-based-build-tools.md) — Supports building language runtimes directly from source to ensure compatibility with specific host operating systems.
- [Version Management Interfaces](https://awesome-repositories.com/f/programming-languages-runtimes/version-management-interfaces.md) — Lists all installed runtime versions and highlights the currently active version. ([source](https://github.com/pyenv/pyenv/blob/master/COMMANDS.md))
- [Global Version Managers](https://awesome-repositories.com/f/programming-languages-runtimes/global-version-managers.md) — Sets or displays the global runtime version used across the entire system. ([source](https://github.com/pyenv/pyenv/blob/master/COMMANDS.md))
- [Source Compilation Tools](https://awesome-repositories.com/f/programming-languages-runtimes/source-compilation-tools.md) — Enables building language runtimes from source to ensure compatibility with specific host operating systems.
- [Command Execution Environments](https://awesome-repositories.com/f/programming-languages-runtimes/command-execution-environments.md) — Executes commands using the currently active runtime version to ensure correct environment context. ([source](https://github.com/pyenv/pyenv/blob/master/COMMANDS.md))
- [Runtime Lifecycle Management](https://awesome-repositories.com/f/programming-languages-runtimes/runtime-lifecycle-management.md) — The version manager removes specific installed runtime versions from the environment to free up disk space or clean up unused software versions. ([source](https://github.com/pyenv/pyenv/blob/master/COMMANDS.md))
- [Version Resolution Strategies](https://awesome-repositories.com/f/programming-languages-runtimes/version-resolution-strategies.md) — Automatically detects and applies the correct language version by traversing directory hierarchies for configuration files.

### Development Tools & Productivity

- [Virtual Environment Managers](https://awesome-repositories.com/f/development-tools-productivity/virtual-environment-managers.md) — Manages virtual environments for different runtime versions to isolate project dependencies. ([source](https://github.com/pyenv/pyenv/wiki/Plugins))
- [CLI Command Extensions](https://awesome-repositories.com/f/development-tools-productivity/cli-command-extensions.md) — Allows users to create custom CLI commands by placing executable scripts in plugin directories. ([source](https://github.com/pyenv/pyenv/wiki/Authoring-plugins))
- [Plugin Architectures](https://awesome-repositories.com/f/development-tools-productivity/plugin-architectures.md) — Supports custom command authoring and community-maintained extensions to integrate additional development tooling.
