Ducktools: PyTUI
A terminal based user interface for managing Python installs and virtual environments.
Usage
The easiest way to install ducktools.pytui is as a tool from PyPI using uv or pipx.
uv tool install ducktools-pytui or pipx install ducktools-pytui
Run with pytui or ducktools-pytui.
There is also now a zipapp available on the releases page and should be usable as long as you have Python 3.12 or newer.
Screenshots
Managing virtual environments
Installing new runtimes
Listing packages installed in a virtual environment (3.9+ only)
Features
- List Python Virtual Environments relative to the current folder alongside those installed in a configurable global folder
- List Python Runtimes discovered by ducktools-pythonfinder
- Launch a Terminal with a selected venv activated
- Currently only fish, bash (and git bash on Windows), zsh, powershell and cmd are supported
- zsh and cmd only have basic support
- Use
exitto close the shell and return to PyTUI
- Currently only fish, bash (and git bash on Windows), zsh, powershell and cmd are supported
- Launch a REPL with the selected venv
- Launch a REPL with the selected runtime
- List installed packages in a venv (Python 3.9 or later)
- Create a venv from a specific runtime in the working directory or a global folder (Python 3.4 or later)
- Delete a selected venv
- Install a runtime (Requires either the Windows Python Manager or UV to be available)
- Uninstall a runtime (Only those managed by the Windows Python Manager or UV)
Basic Configuration
Some configuration is available by editing the config.json file located here:
- Windows:
%LOCALAPPDATA%\ducktools\pytui\config.json - Non-Windows:
~/.config/ducktools/pytui/config.json
Config can be seen and edited from the commandline with the config subcommand.
Some example commands:
pytui config- Shows the location of the config file and its current statepytui config -h- Shows the options for modifying the config filepytui config --exclude-pip- Preventpipfrom being included
Config Values
venv_search_mode- Where to search for VEnv folders"cwd"- Search in the working directory only"parents"- Search in the working directory and each parent folder (default)"recursive"- Search in the working directory and subfolders recursively"recursive_parents"- Combine the "recursive" and "parents" options (only the CWD is recursively searched)
include_pip- Whether to includepip(andsetuptoolswhere appropriate) in created VEnvs (default:True)latest_pip- Download the latestpipfor Python versions where it is available (default:True)global_venv_folder- The folder to use for global pytui venvs,~/.local/share/ducktools/pytui/venvsby defaultshell_path- Path to the shell used to launch activated venvs
Clearing the discovered Python install cache
The Python install discovery cache is handled by the ducktools-pythonfinder package.
The easiest way to clear the cache is to use the ducktools-pythonfinder commandline.
- With uv:
uvx ducktools-pythonfinder clear-cache - With pipx:
pipx run ducktools-pythonfinder clear-cache - With the pythonfinder zipapp:
python pythonfinder.pyz clear-cache
Shell Discovery
By default PyTUI will check your $SHELL variable if it is set for the path to your default shell.
If this exists and is a supported shell it will be used. Otherwise it will search PATH for shells
in this order:
- Windows:
pwsh.exe,powershell.exe,cmd.exe,bash.exe - Non-Windows:
fish,bash,zsh
On Windows as a last resort if none of these are found it will search for the COMSPEC environment
variable to find a path to cmd.exe.
A data folder of shell scripts is kept in this location:
- Windows: `%LOCALAPPDATA%\ducktools\pytui\shell_scripts
- Non-Windows:
~/.local/share/ducktools/pytui/shell_scripts
Possible Extras
- Support other common shells
- Highlight broken venvs where the base install no longer exists
Not Planned
- Handle PEP-723 inline scripts
ducktools-envis my project for managing these- Potentially that could gain a TUI, but I'm not sure I'd want to merge the two things
- Handle Conda environments
- Conda environments are a completely separate ecosystem, while everything this supports uses the standard PyPI ecosystem
- Supporting Conda would basically require a whole separate parallel set of commands
- Manage
ducktools-pytuispecific runtimes- I don't want to add yet another place Python can be installed
ducktools-pytuiis intended to help manage the chaos of Python runtime installs and environments, not add a new dimension to it
Metadata
Release files for ducktools-pytui 0.4.7
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| ducktools_pytui-0.4.7.tar.gz | 160.1 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ducktools_pytui-0.4.7-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 204.6 kB
Release files / ducktools_pytui-0.4.7.tar.gz
| Download URL | ducktools_pytui-0.4.7.tar.gz |
|---|---|
| Size | 160.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3d5fb9504129358f49e35f61bdfc6575108566851505422db80f86337132f6a9
|
|
BLAKE2b-256 checksum How to use checksums |
3cdff684e863964c81b92a854ac47dcaa1918d39e91e4a0ad202d3e101ef78c1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 21, 2026.
Transparency logRelease files / ducktools_pytui-0.4.7-py3-none-any.whl
| Download URL | ducktools_pytui-0.4.7-py3-none-any.whl |
|---|---|
| Size | 44.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
8e59525b45a8a21a8993089e207992a392de4224b4dd1e3d05dca3e4052e69ea
|
|
BLAKE2b-256 checksum How to use checksums |
f431a671306599c3da3a20de55fbdc277798c97ca1087957b89f34f11667d926
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 21, 2026.
Transparency logSecurity for ducktools-pytui 0.4.7
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for ducktools_pytui-0.4.7.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 21, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.