A simple, unobtrusive tool to easily switch between multiple versions of Python on a per-user or per-project basis.
pyenv is a lightweight command-line tool that enables developers to easily install, switch, and manage multiple Python versions on their local machine. It solves the problem of working with projects that require different Python versions by providing a simple, shim-based mechanism to control which version is used globally, per-project, or per-shell session.
Python developers who work on multiple projects with varying Python version requirements, especially those needing to test across different Python releases or maintain compatibility with legacy systems.
Developers choose pyenv for its simplicity, lack of Python dependency, and adherence to UNIX principles. It offers a non-intrusive, reliable way to manage Python environments without the overhead of virtual environments or complex configuration.
Simple Python version management
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Written entirely in shell script, pyenv avoids bootstrap issues and doesn't rely on Python itself to manage versions, ensuring reliability from the ground up.
Uses shims injected into PATH to intercept commands, providing seamless version switching without deep shell integration or performance overhead.
Allows global, per-project, and per-shell Python version selection via environment variables and configuration files, enabling precise control for different workflows.
Supports a plugin architecture, letting users enhance functionality, such as adding virtual environment automation with pyenv-virtualenv.
pyenv does not officially support Windows and only works under WSL with Linux Python versions, limiting its utility for Windows-native development.
Installation requires manual configuration of shell startup files for different shells, with potential for issues like infinite loops in Bash if not done correctly.
Unlike tools like conda, pyenv does not handle virtual environments out of the box, necessitating additional plugins or manual setup for environment isolation.