This project provides self-contained (hence, "portable") Python distributions to a variety of target platforms and architectures. These Python distributions can be downloaded and extracted to anywhere on the filesystem, making installation trivially easy and configurable.
To get started, download archives from GitHub releases. Alternatively, use any of the following installers:
npm i @bjia56/portable-python-3.9
npm i @bjia56/portable-python-3.10
npm i @bjia56/portable-python-3.11
npm i @bjia56/portable-python-3.12
For example, on Linux via bash:
$ wget -q https://github.com/bjia56/portable-python/releases/download/cpython-v3.12.6-build.5/python-headless-3.12.6-linux-x86_64.zip
$ unzip -qq python-headless-3.12.6-linux-x86_64.zip
$ ./python-headless-3.12.6-linux-x86_64/bin/python --version
Python 3.12.6
Or via the node installer:
$ npm i --silent @bjia56/portable-python-3.12
$ ./node_modules/@bjia56/portable-python-3.12/python-headless-3.12.6-linux-x86_64/bin/python --version
Python 3.12.6
Or via node:
var pythonExe = require("@bjia56/portable-python-3.12");
var child_process = require("child_process");
console.log(child_process.execSync(`${pythonExe} --version`).toString());
Currently, CPython 3.9, 3.10, 3.11, and 3.12 are built for the following targets:
- Linux x86_64, i386, aarch64, arm 1, riscv64 (glibc)
- Windows x86_64
- MacOS x86_64, arm64 2
- FreeBSD 13, 14 x86_64
- Cosmopolitan libc 3
For all CPython distributions except for the Cosmopolitan libc build, there are two available variants: full
and headless
. The distinction is that headless
builds do not include any UI libraries (i.e. tkinter
and its dependencies), so are better suited for non-graphical server installations.
PyPy and GraalPy distributions are also available as repackaged versions of official upstream releases. Though they are already portable, the distributions have been made available through the node installers for convenience and flexibility.
1 The arm builds target armv6, specifically the configuration of the Raspberry Pi 1. Current arm builds do not work properly on old glibc, but a recent version of Raspbian like Debian bullseye should provide a new enough glibc to work. ↩
2 MacOS distributions are provided as universal2, which will work on both x86_64 and arm64. ↩
3 Cosmopolitan builds are statically linked and may not support all Python features. ↩
The build scripts and code in this repository are available under the Apache-2.0 License. Note that compilation of Python involves linking against other libraries, some of which may include different licensing terms. Copies of the licenses from known dependencies are included under the licenses
directory of each Python distribution.