A near-total rewrite. The v1.x GUI was a thin pyenv command runner; 2.0.0 turns it into a real management surface for
Python versions on Windows.
What's new
Status panel
- Live banner showing the active Python version and where it was set.
global/local/shellscopes displayed side by side, refreshed automatically after every operation.- PATH check that warns when
pyenv-win\shimsis missing, with a one-click Fix PATH that prependsbinand
shimsto your USER PATH (no admin needed). - "↻ Refresh" button to re-query on demand.
Install / browse Python versions
- One-click "Install latest 3.X" buttons for each recent major series, auto-populated from
pyenv install -l. - Browse installable dialog with major-version filter, live search, "installed" marker, and "latest stable"
highlight. Install directly from the dialog with a double-click or the Install button.
Manage installed versions
- New Manage installed… dialog — Treeview showing version, executable path, disk usage, and active marker.
Right-click any row for:- Set as Global
- Uninstall… (confirms before deleting)
- Create venv… — pick a folder, runs
python -m venvwith the selected interpreter, prints an activation hint. - Manage packages (pip)… — non-modal panel showing installed packages, with install / freeze / uninstall
actions. - Open Folder / Copy Path
Friendly command runner
- Subcommand dropdown now shows human labels with descriptions instead of bare pyenv names.
- Version-aware argument autocomplete (installed versions for
local/global/shell/uninstall, installable
versions forinstall). - Quick action buttons for common no-arg commands (List installed, Current version, Rehash shims, Update mirrors).
Output & UX
- ANSI escape sequences stripped so pyenv-win's colored output stops rendering as garbage boxes.
- Progress bar with phase label (e.g. "Downloading…", "Installing…") during long operations.
- Stop button — force-terminates the whole subprocess tree, not just the parent shell.
- Hover tooltips on every button.
- Right-click menu on the output pane: Copy / Copy all / Save to file… / Clear.
- Window geometry and last-selected command persist across launches (
%APPDATA%\pyenv-win-GUI\settings.json). - Open pyenv root button next to Install / Uninstall.
Under the hood
- Codebase reorganized from one ~1300-line file into a
pyenv_gui/package, split along the Tk boundary so the pure
helpers (shell.py,pyenv.py) are testable in isolation. - Vendored the official
install-pyenv-win.ps1— installs no longer download a script into the working directory at
runtime. - Pytest suite covering version parsing, sorting, series extraction, size formatting, ANSI stripping, and command
metadata. - Re-entry guard prevents double-firing pyenv operations from rapid clicks or open dialogs.
- Type hints on all pure-helper functions.
- Standalone
.exebuilds and Releases are now produced automatically via GitHub Actions on every numeric tag.
Compatibility
- Requires Windows 10 or 11. PowerShell is used under the hood but ships with Windows.
- The prebuilt
.exehas no Python dependency on the target machine. - Building from source requires Python 3.9+ (standard library only — no third-party deps).
Full Changelog: v1.0.1...2.0.0