PBS Installer

raw JSON →
2026.3.25 verified Tue May 12 auth: no python install: verified quickstart: verified

pbs-installer is a Python library that serves as an installer for @indygreg's python-build-standalone. It automates the process of downloading and installing specific Python versions in a standalone fashion. The library is actively maintained with frequent releases, often multiple times a month, and is currently at version 2026.3.25.

pip install pbs-installer
error ModuleNotFoundError: No module named 'pbs_installer'
cause The 'pbs-installer' package is not installed in the current Python environment or the environment is not properly activated.
fix
pip install pbs-installer
error pbs-installer: command not found
cause The 'pbs-installer' command-line tool is not installed or its installation directory is not included in the system's PATH environment variable.
fix
Ensure the package is installed with pip install pbs-installer, then restart your terminal or verify that the Python environment's script directory is in your system's PATH.
error OSError: [Errno 13] Permission denied: '/usr/local/python/3.10.8'
cause The user is attempting to install a standalone Python build into a system-protected directory where they lack write permissions.
fix
Specify an installation directory where the current user has write permissions using the --path argument (e.g., pbs-installer install 3.10.8 --path ~/.pythons/3.10.8), or run the command with elevated privileges (sudo pbs-installer ...) if installing to a system-wide location is absolutely necessary (though generally discouraged for standalone builds).
error checksum mismatch for https://github.com/indygreg/python-build-standalone/releases/download/...
cause The downloaded Python build file is corrupted, incomplete, or its checksum no longer matches the expected value, possibly due to a network issue, an interrupted download, or an upstream change to the build artifact.
fix
Clear the local cache using pbs-installer clear-cache and then retry the installation. If the issue persists, verify your network connection or check the python-build-standalone GitHub releases for any reported issues with the specific build version.
error No such Python build exists for version '3.10.99' for platform 'linux-x86_64'.
cause The specified Python version (e.g., '3.10.99') does not have a pre-built standalone package available for the current operating system and architecture on the `python-build-standalone` releases page.
fix
Check the official python-build-standalone GitHub releases or the output of pbs-installer list for a list of available and supported Python versions for your platform, and use one of those.
gotcha Full functionality requires optional dependencies `httpx` and `zstandard`. Without them, downloading might fail (e.g., `ModuleNotFoundError` for `httpx`) or Zstandard-compressed builds cannot be extracted.
fix Install `pbs-installer` with the `[all]` extra: `pip install pbs-installer[all]`.
gotcha There are multiple unrelated Python libraries or projects with 'PBS' in their name (e.g., `pbs-python` for Torque/OpenPBS, `pbs` for subprocess management). Ensure you are importing and using `pbs_installer` from `frostming` for Python Build Standalone installations.
fix Verify your imports: `from pbs_installer import install` and confirm `pypi.org/project/pbs-installer` is the intended library.
gotcha The `request` parameter for the `install` function expects specific Python version strings (e.g., '3.10', '3.10.4', 'pypy-3.9'). Passing malformed or ambiguous strings might result in a `ValueError` if a matching build cannot be found.
fix Consult the `pbs-installer` documentation or source code for supported version string formats. Use precise version numbers.
gotcha When installing Python for a different target environment (cross-compiling) or if auto-detection fails, explicitly specifying the `arch` and `platform` parameters in the `install` function is crucial. Omitting them might lead to downloading an incompatible Python build for the current system.
fix Pass `arch='x86_64'`, `platform='linux'` (or appropriate values) to the `install` function to ensure the correct standalone build is selected.
pip install pbs-installer[all]
pipx install pbs-installer
python os / libc variant status wheel install import disk
3.10 alpine (musl) pbs-installer - - 0.07s 18.5M
3.10 alpine (musl) all - - 0.09s 24.4M
3.10 slim (glibc) pbs-installer - - 0.06s 19M
3.10 slim (glibc) all - - 0.06s 25M
3.11 alpine (musl) pbs-installer - - 0.14s 20.4M
3.11 alpine (musl) all - - 0.10s 26.7M
3.11 slim (glibc) pbs-installer - - 0.12s 21M
3.11 slim (glibc) all - - 0.09s 27M
3.12 alpine (musl) pbs-installer - - 0.11s 12.3M
3.12 alpine (musl) all - - 0.10s 18.4M
3.12 slim (glibc) pbs-installer - - 0.09s 13M
3.12 slim (glibc) all - - 0.13s 19M
3.13 alpine (musl) pbs-installer - - 0.07s 11.9M
3.13 alpine (musl) all - - 0.07s 17.8M
3.13 slim (glibc) pbs-installer - - 0.10s 12M
3.13 slim (glibc) all - - 0.07s 18M
3.9 alpine (musl) pbs-installer - - 0.07s 18.0M
3.9 alpine (musl) all - - 0.05s 23.7M
3.9 slim (glibc) pbs-installer - - 0.09s 19M
3.9 slim (glibc) all - - 0.07s 24M

This quickstart demonstrates how to use the `install` function from `pbs_installer` to download and install a specific version of CPython into a local directory. It highlights the main entry point for programmatic usage.

import os
from pbs_installer import install

# Define the target directory for Python installation
install_path = os.path.join(os.getcwd(), "my_python_env")
python_version = "3.10" # Example: install CPython 3.10

print(f"Attempting to install CPython {python_version} to {install_path}")
try:
    # Ensure optional dependencies are installed for full functionality, e.g., via `pip install pbs-installer[all]`
    install(request=python_version, destination=install_path)
    print(f"CPython {python_version} installed successfully to {install_path}")
except Exception as e:
    print(f"Error installing Python: {e}")

# Example of how to verify installation (simplified)
# This would typically involve checking for the python executable in install_path
python_executable = os.path.join(install_path, 'bin', 'python') if os.name == 'posix' else os.path.join(install_path, 'python.exe')
if os.path.exists(python_executable):
    print(f"Python executable found at: {python_executable}")
else:
    print(f"Python executable NOT found at: {python_executable}")