psa — Python Standalone Manager
Pure-Python CLI to list, download, and extract astral-sh/python-build-standalone prebuilt Python distributions.
psa's job is to bootstrap Python on a system. Projects then create their venvs with the interpreter they need (--python=python3.13); psa deliberately has no project-management features.
Supported platforms:
- macOS Apple Silicon (
aarch64-apple-darwin) - Linux x86_64 glibc (
x86_64-unknown-linux-gnu)
It focuses on the install_only / install_only_stripped archives, and has no mandatory dependencies beyond the standard library.
Quick start
pip install psa-cli # package is psa-cli; command is psa
psa install 3.13 # newest 3.13.x: download, extract, link
echo 'eval "$(psa shellenv)"' >> ~/.zshrc # put ~/.python/bin on PATH
python3.13 -m venv .venv # projects take it from there
psa install maintains symlinks in ~/.python/bin: python3.X per installed minor (newest patch wins), and python3 pointing at the highest minor — or a pinned one via psa link --set-default 3.12.
Or without installing:
python -m psa install 3.13
Optional extra for in-Python extraction of .tar.zstd without a zstd-capable system tar:
pip install "psa-cli[extract]"
Layout
Base directory defaults to ~/.python (override with --base-dir):
~/.python/
downloads/ # raw downloaded archives
versions/<version>/ # extracted trees
bin/ # managed symlinks (python3, python3.X)
config.toml # optional settings (default = "3.X")
Documentation
Full command reference lives in docs/ (Sphinx):
pip install -e ".[docs]"
sphinx-build -M html docs docs/_build
Project structure
src/psa/
cli.py # argparse commands
releases.py # remote: release metadata, asset parsing, downloads
store.py # local: extraction, installed versions, symlinks, config
tests/ # pytest suite (offline pieces: parsing, selection, linking)
docs/ # Sphinx documentation
notes/ # design notes and history
Tests
python -m pytest
License
MIT
Release files for psa-cli 26.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| psa_cli-26.1.tar.gz | 16.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| psa_cli-26.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 28.3 kB
Release files / psa_cli-26.1.tar.gz
| Download URL | psa_cli-26.1.tar.gz |
|---|---|
| Size | 16.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e9d2a07199abea1f93677cf98c83bc2b22e700e413cf1ea3280a9b89f02b8cf9
|
|
BLAKE2b-256 checksum How to use checksums |
7439d6a2830322131d12252c18df2ccac0c0f551ce07a5b1af7aee81af937331
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
python-requests/2.32.5
|
Release files / psa_cli-26.1-py3-none-any.whl
| Download URL | psa_cli-26.1-py3-none-any.whl |
|---|---|
| Size | 11.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
03362a91d84f61c716f9cbbc208b08bd4de8796f6197e914b5d0abf4488911c4
|
|
BLAKE2b-256 checksum How to use checksums |
bafddeb1b2b2d180609f4baf3443eba6cde9ded400a4928a1ae27c92cef585c9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
python-requests/2.32.5
|