https://github.com/brettcannon/python-launcher/discussions/222 # Installation - PyPI wheel? - Lock file via URL or path? - GitHub releases? # Discovery - `py-<name>` on `$PATH` - ... and on a configurable list of additional paths - Extension installed via `py extension install` # Commands - install - uninstall - update/refresh - list - info? Or `list` with more details? # Calling convention - `PY_PATH`: path to `py` that's executing the extension - `PY_APP_VERSION`: version of `py` (name is tricky due to `PY_VERSION` already being a thing) - Special support for `.pyz` files? - Detection - Detect when an extension is a zip file and has appropriate shebang? - File ends in `.pyz`? - Installed via `extension install` subcommand? - Detect required Python version and use a global interpreter version in isolated mode to call it - Skips having to launch `py` again by the OS via the shebang line (less of a concern if the barebones part of `py` is in Rust) - Depending on detection method, avoids having to set the shebang # SDK - `path()` - `version()` - Helpers for any built-in subcommands