# Inspiration | [`hatch python show`](https://hatch.pypa.io/latest/cli/reference/#hatch-python-show) | [2023-12-11](https://hatch.pypa.io/latest/history/hatch/#hatch-v1.8.0) | [1.8.0](https://hatch.pypa.io/latest/history/hatch/#hatch-v1.8.0) | | ------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | | [`pdm python list`](https://pdm-project.org/en/latest/reference/cli/#list_2) | [2024-03-27](https://pdm-project.org/en/latest/dev/changelog/#release-v2130-2024-03-27) | [2.13.0](https://pdm-project.org/en/latest/dev/changelog/#release-v2130-2024-03-27) | | [`pipx interpreter list`](https://pipx.pypa.io/latest/docs/#pipx-interpreter) | [2024-03-29](https://pipx.pypa.io/latest/changelog/#:~:text=Add%20commands%20to%20list%20and%20prune%20standalone%20interpreters) | [1.5.0](https://github.com/pypa/pipx/tree/1.5.0) | | [`uv python list`](https://docs.astral.sh/uv/reference/cli/#uv-python-list) | [2024-08-24](https://astral.sh/blog/uv-unified-python-packaging) | [0.3](https://astral.sh/blog/uv-unified-python-packaging) | | [`pymanager list`](https://peps.python.org/pep-0773/#list-subcommand) | [2025-10-08](https://github.com/python/pymanager/releases/tag/25.0) | [25.0](https://github.com/python/pymanager/releases/tag/25.0) | ## Hatch ``` Options: Name Type Description Default --ascii boolean Whether or not to only use ASCII characters False --dir, -d text The directory in which distributions reside Sentinel.UNSET --help boolean Show this message and exit. False ``` ## PDM ``` Options: -h, --help: Show this help message and exit. -v, --verbose: Use -v for detailed output and -vv for more detailed -q, --quiet: Suppress output ``` ## pipx ``` options: -h, --help show this help message and exit ``` ## uv ``` Options: --all-versions List all Python versions, including old patch versions --all-platforms List Python downloads for all platforms --all-arches List Python downloads for all architectures --only-installed Only show installed Python versions --only-downloads Only show available Python downloads --show-urls Show the URLs of available Python downloads --output-format <OUTPUT_FORMAT> Select the output format [default: text] [possible values: text, json] --python-downloads-json-url <PYTHON_DOWNLOADS_JSON_URL> URL pointing to JSON of custom Python installations Cache options: -n, --no-cache Avoid reading from or writing to the cache, instead using a temporary directory for the duration of the operation [env: UV_NO_CACHE=] --cache-dir <CACHE_DIR> Path to the cache directory [env: UV_CACHE_DIR=] Python options: --managed-python Require use of uv-managed Python versions [env: UV_MANAGED_PYTHON=] --no-managed-python Disable use of uv-managed Python versions [env: UV_NO_MANAGED_PYTHON=] --no-python-downloads Disable automatic downloads of Python. [env: "UV_PYTHON_DOWNLOADS=never"] Global options: -q, --quiet... Use quiet output -v, --verbose... Use verbose output --color <COLOR_CHOICE> Control the use of color in output [possible values: auto, always, never] --native-tls Whether to load TLS certificates from the platform's native certificate store [env: UV_NATIVE_TLS=] --offline Disable network access [env: UV_OFFLINE=] --allow-insecure-host <ALLOW_INSECURE_HOST> Allow insecure connections to a host [env: UV_INSECURE_HOST=] --no-progress Hide all progress outputs [env: UV_NO_PROGRESS=] --directory <DIRECTORY> Change to the given directory prior to running the command [env: UV_WORKING_DIR=] --project <PROJECT> Discover a project in the given directory [env: UV_PROJECT=] --config-file <CONFIG_FILE> The path to a `uv.toml` file to use for configuration [env: UV_CONFIG_FILE=] --no-config Avoid discovering configuration files (`pyproject.toml`, `uv.toml`) [env: UV_NO_CONFIG=] -h, --help Display the concise help for this command ``` ## Launcher for Windows ``` Options: -f, --format=<table,json,jsonl,csv,exe,prefix,url,formats> Specify list format, defaults to table. Pass -f formats for the full list of formats. -1, --one Only display first result that matches the filter --online List runtimes available to install from the default index -s, --source=<URL> List runtimes from a particular index --only-managed Only list Python installs managed by the tool <FILTER> Filter results (Company\Tag with optional <, <=, >, >= prefix) EXAMPLE: List all installed runtimes > py list EXAMPLE: Display the executable of the default runtime > py list --one -f=exe EXAMPLE: Show JSON details for each install since 3.10 > py list -f=jsonl >=3.10 EXAMPLE: Find 3.12 runtimes available for install > py list --online 3.12 ``` ```PowerShell PS C:\Users\brcan> py list --format=formats Format Description table Lists as a user-friendly table csv List as a comma-separated value table json Lists as a single JSON object jsonl Lists as JSON on each line id Lists the runtime ID exe Lists the main executable path prefix Lists the prefix directory url Lists the original source URL legacy List runtimes using the old format legacy-paths List runtime paths using the old format formats List the available list formats ``` ### "tables" / default ``` Tag Name Managed By Version Alias 3.14[-64] * Python 3.14.0 PythonCore 3.14.0 python3[-64].exe, python3.14[-64].exe 3.14t[-64] Python 3.14.0 (free-threaded) PythonCore 3.14.0 python3.14t[-64].exe, python3t[-64].exe 3.13[-64] Python 3.13.8 PythonCore 3.13.8 python3.13[-64].exe 3.13t[-64] Python 3.13.8 (free-threaded) PythonCore 3.13.8 python3.13t[-64].exe 3.12[-64] Python 3.12.10 PythonCore 3.12.10 python3.12[-64].exe 3.11[-64] Python 3.11.9 PythonCore 3.11.9 python3.11[-64].exe 3.10[-64] Python 3.10.11 PythonCore 3.10.11 python3.10.exe ``` ### JSONL ```json {"schema": 1, "id": "pythoncore-3.10-64", "sort-version": "3.10.11", "company": "PythonCore", "tag": "3.10-64", "install-for": ["3.10.11-64", "3.10-64", "3-64"], "run-for": [{"tag": "3.10.11-64", "target": "python.exe"}, {"tag": "3.10-64", "target": "python.exe"}, {"tag": "3-64", "target": "python.exe"}, {"tag": "3.10.11-64", "target": "pythonw.exe", "windowed": 1}, {"tag": "3.10-64", "target": "pythonw.exe", "windowed": 1}, {"tag": "3-64", "target": "pythonw.exe", "windowed": 1}], "alias": [{"name": "python3.10.exe", "target": "python.exe"}, {"name": "python3.exe", "target": "python.exe"}, {"name": "pythonw3.10.exe", "target": "pythonw.exe", "windowed": 1}, {"name": "pythonw3.exe", "target": "pythonw.exe", "windowed": 1}], "shortcuts": [{"kind": "pep514", "Key": "PythonCore\\3.10", "DisplayName": "Python 3.10.11", "SupportUrl": "https://www.python.org/", "SysArchitecture": "64bit", "SysVersion": "3.10", "Version": "3.10.11", "InstallPath": {"_": "%PREFIX%", "ExecutablePath": "%PREFIX%python.exe", "WindowedExecutablePath": "%PREFIX%pythonw.exe"}, "Help": {"Online Python Documentation": {"_": "https://docs.python.org/3.10/"}}}, {"kind": "start", "Name": "Python 3.10", "Items": [{"Name": "Python 3.10", "Target": "%PREFIX%python.exe", "Icon": "%PREFIX%python.exe"}, {"Name": "Python 3.10 Online Documentation", "Icon": "%SystemRoot%\\System32\\SHELL32.dll", "IconIndex": 13, "Target": "https://docs.python.org/3.10/"}]}, {"kind": "uninstall", "Publisher": "Python Software Foundation", "HelpLink": "https://docs.python.org/3.10/"}], "display-name": "Python 3.10.11", "executable": "C:\\Users\\brcan\\AppData\\Local\\Python\\pythoncore-3.10-64\\python.exe", "url": "https://api.nuget.org/v3-flatcontainer/python/3.10.11/python.3.10.11.nupkg", "__original-shortcuts": [{"kind": "pep514", "Key": "PythonCore\\3.10", "DisplayName": "Python 3.10.11", "SupportUrl": "https://www.python.org/", "SysArchitecture": "64bit", "SysVersion": "3.10", "Version": "3.10.11", "InstallPath": {"_": "%PREFIX%", "ExecutablePath": "%PREFIX%python.exe", "WindowedExecutablePath": "%PREFIX%pythonw.exe"}, "Help": {"Online Python Documentation": {"_": "https://docs.python.org/3.10/"}}}, {"kind": "start", "Name": "Python 3.10", "Items": [{"Name": "Python 3.10", "Target": "%PREFIX%python.exe", "Icon": "%PREFIX%python.exe"}, {"Name": "Python 3.10 Online Documentation", "Icon": "%SystemRoot%\\System32\\SHELL32.dll", "IconIndex": 13, "Target": "https://docs.python.org/3.10/"}]}, {"kind": "uninstall", "Publisher": "Python Software Foundation", "HelpLink": "https://docs.python.org/3.10/"}], "source": "https://www.python.org/ftp/python/index-windows.json", "prefix": "C:\\Users\\brcan\\AppData\\Local\\Python\\pythoncore-3.10-64"} ``` ### exe ``` C:\Users\brcan\AppData\Local\Python\pythoncore-3.14-64\python.exe C:\Users\brcan\AppData\Local\Python\pythoncore-3.14t-64\python3.14t.exe C:\Users\brcan\AppData\Local\Python\pythoncore-3.13-64\python.exe C:\Users\brcan\AppData\Local\Python\pythoncore-3.13t-64\python3.13t.exe C:\Users\brcan\AppData\Local\Python\pythoncore-3.12-64\python.exe C:\Users\brcan\AppData\Local\Python\pythoncore-3.11-64\python.exe C:\Users\brcan\AppData\Local\Python\pythoncore-3.10-64\python.exe ``` # Purpose List all of the discovered interpreters. # Ideas - [Discourse discussion](https://discuss.python.org/t/what-information-is-useful-to-know-statically-about-an-interpreter/25563) - [PEP 711 cross-post](https://discuss.python.org/t/pep-711-pybi-a-standard-format-for-distributing-python-binaries/25547/14?u=brettcannon) - `--format`: Specify the output format; all output in UTF-8 - `jsonl`: Print [interpreter details](https://github.com/brettcannon/python-launcher/discussions/168) using [JSON Lines](https://jsonlines.org/) - This should work with [`json -o` for Nu](https://www.nushell.sh/commands/docs/from_json.html) - Results are streamed as results are found instead of being sorted - Fields - `version` - `path` - `virtual`? - Can be inferred based on how the environment was found - `via` - `$VIRTUAL_ENV` - `.venv` - `$PATH` - `pretty` (default): Print interpreter details in a format designed to be human-readable - Include same details as the JSONL output - Sorted by how "good" the interpreter is - `--ignore-venv`: Ignore virtual environments (or default to `--include-venv`)? - Might be unnecessary or only useful via `--one` - `--one` - Only print the path to the "best" interpreter - https://github.com/python/cpython/issues/102522 would give more accurate version info for virtual environments