{"id":21491653,"url":"https://github.com/bjia56/portable-python","last_synced_at":"2025-03-31T10:02:13.297Z","repository":{"id":212324198,"uuid":"696594058","full_name":"bjia56/portable-python","owner":"bjia56","description":"Portable Python binaries","archived":false,"fork":false,"pushed_at":"2025-03-09T01:28:17.000Z","size":727,"stargazers_count":36,"open_issues_count":3,"forks_count":5,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-22T23:02:45.274Z","etag":null,"topics":["installer","nodejs","python"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bjia56.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-09-26T04:06:45.000Z","updated_at":"2025-03-19T00:46:21.000Z","dependencies_parsed_at":"2024-01-24T05:28:13.264Z","dependency_job_id":"11c8fadf-e03b-461b-82fa-d74f9b3950ef","html_url":"https://github.com/bjia56/portable-python","commit_stats":{"total_commits":375,"total_committers":4,"mean_commits":93.75,"dds":"0.32533333333333336","last_synced_commit":"d535fcc09cf9f9cd48646f542db6098d529bd03f"},"previous_names":["bjia56/portable-python"],"tags_count":128,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bjia56%2Fportable-python","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bjia56%2Fportable-python/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bjia56%2Fportable-python/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bjia56%2Fportable-python/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bjia56","download_url":"https://codeload.github.com/bjia56/portable-python/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246450408,"owners_count":20779406,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["installer","nodejs","python"],"created_at":"2024-11-23T15:17:19.603Z","updated_at":"2025-03-31T10:02:13.191Z","avatar_url":"https://github.com/bjia56.png","language":"Shell","funding_links":[],"categories":["Miscellaneous"],"sub_categories":[],"readme":"# portable-python\n[![GitHub Downloads (all assets, all releases)](https://img.shields.io/github/downloads/bjia56/portable-python/total)](https://bjia56.github.io/portable-python/)\n[![NPM Version](https://img.shields.io/npm/v/%40bjia56%2Fportable-python)](https://www.npmjs.com/package/@bjia56/portable-python)\n\n\nThis 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.\n\n## Usage\n\nTo get started, download archives from [GitHub releases](https://github.com/bjia56/portable-python/releases). Alternatively, use any of the following installers:\n- `npm i @bjia56/portable-python-3.9`\n- `npm i @bjia56/portable-python-3.10`\n- `npm i @bjia56/portable-python-3.11`\n- `npm i @bjia56/portable-python-3.12`\n- `npm i @bjia56/portable-python-3.13`\n\nFor example, on Linux via bash:\n```\n$ 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\n$ unzip -qq python-headless-3.12.6-linux-x86_64.zip\n$ ./python-headless-3.12.6-linux-x86_64/bin/python --version\nPython 3.12.6\n```\n\nOr via the node installer:\n```\n$ npm i --silent @bjia56/portable-python-3.12\n$ ./node_modules/@bjia56/portable-python-3.12/python-headless-3.12.6-linux-x86_64/bin/python --version\nPython 3.12.6\n```\n\nOr via node:\n```js\nvar pythonExe = require(\"@bjia56/portable-python-3.12\");\nvar child_process = require(\"child_process\");\nconsole.log(child_process.execSync(`${pythonExe} --version`).toString());\n```\n\n## Available distributions\n\nCurrently, CPython 3.9, 3.10, 3.11, 3.12, and 3.13 are built for the following targets:\n- Linux x86_64, i386, aarch64, arm \u003csup id=\"a1\"\u003e[1](#f1)\u003c/sup\u003e, riscv64, s390x, loongarch64, powerpc64le (glibc)\n- Windows x86_64 \u003csup id=\"a2\"\u003e[2](#f2)\u003c/sup\u003e\n- MacOS x86_64, arm64 \u003csup id=\"a3\"\u003e[3](#f3)\u003c/sup\u003e\n- FreeBSD 13, 14, 15 x86_64\n- Solaris 11 x86_64\n- Cosmopolitan Libc \u003csup id=\"a4\"\u003e[4](#f4)\u003c/sup\u003e\n\nFor Linux CPython builds, the minimum glibc required is as follows:\n\n| Hardware Architecture | Minimum glibc Version |\n|-|-|\n| x86_64      | 2.17 |\n| i386        | 2.17 |\n| aarch64     | 2.17 |\n| arm         | 2.17 |\n| riscv64     | 2.27 |\n| s390x       | 2.19 |\n| loongarch64 | 2.36 |\n| powerpc64le | 2.19 |\n\n\nFor 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.\n\nPyPy 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.\n\n\u003csub\u003e\u003cb id=\"f1\"\u003e1\u003c/b\u003e The arm builds target armv6, specifically the configuration of the Raspberry Pi 1. Current arm builds do not work properly on old glibc (despite the glibc 2.17 target), but a recent version of Raspbian like Debian bullseye should provide a new enough glibc to work. [↩](#a1)\u003c/sub\u003e\n\n\u003csub\u003e\u003cb id=\"f2\"\u003e2\u003c/b\u003e Windows distributions require a minimum of Windows 10. [↩](#a2)\u003c/sub\u003e\n\n\u003csub\u003e\u003cb id=\"f3\"\u003e3\u003c/b\u003e MacOS distributions are provided as universal2, which will work on both x86_64 and arm64. The minimum MacOS version is 10.9 on x86_64 and 11.0 on arm64. [↩](#a3)\u003c/sub\u003e\n\n\u003csub\u003e\u003cb id=\"f4\"\u003e4\u003c/b\u003e [Cosmopolitan Libc](https://justine.lol/cosmopolitan/index.html) builds are statically linked and may not support all Python features. See the Cosmopolitan Libc project's documentation for minimum operating system requirements. [↩](#a4)\u003c/sub\u003e\n\n## Licensing\n\nThe 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.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbjia56%2Fportable-python","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbjia56%2Fportable-python","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbjia56%2Fportable-python/lists"}