Artefakt Python
Přenosná, soběstačná distribuce CPythonu, referenční implementace programovacího jazyka Python, sestavená z projektu python-build-standalone (udržovaného společností Astral). Tento repozitář využívá Artifact Handler platformy Embedbits k vyhledání, stažení, ověření a konfiguraci interpretu Pythonu v navazujících embedded build nástrojích (build skripty, generátory kódu, nástroje pro flashování/testování a podobné úlohy, které potřebují Python bez závislosti na tom, co je nainstalováno na hostitelském stroji).
Každá větev v tomto repozitáři plní odlišnou roli, což umožňuje přesnou správu verzí a reprodukovatelné buildy napříč projekty.
Obsah repozitáře
python/
├── main branch
│ ├── README.md ← this file
│ └── ArtifactConfig.cmake ← Artifact metadata template
│
├── Core branch
│ ├── ArtifactConfig.cmake ← Artifact metadata (name, version constraints, asset naming)
│ └── CMakePythonDefaults.cmake ← Python integration logic (interpreter path setup, invocation helpers)
│
└── Bin branch ← anchor branch, empty commits only (see "How binaries are published" below)
tags: Bin/<version>-<platform>, e.g. Bin/3.12.8-Unix
Role v platformě
GitHub (Embedbits)
──────────────────────────────────────────────────────────
Artifact-python
main branch → README, ArtifactConfig.cmake template
Core branch → CMake handler scripts
Bin branch → anchor branch + per-version/platform tags
Bin/3.11.9-Unix → GitHub Release: CPython 3.11.9, Linux x86_64
Bin/3.12.8-Win → GitHub Release: CPython 3.12.8, Windows x86_64
Bin/3.13.5-DarwinARM → GitHub Release: CPython 3.13.5, macOS arm64
...
Platform Artifact Handler v navazujících projektech odkazuje na tento repozitář jako na Git submodul. Při konfiguraci CMake přečte ArtifactConfig.cmake, aby zjistil, které vydání stáhnout, a poté stáhne a ověří příslušný binární archiv z assetů GitHub Release u daného tagu.
Jak se binárky publikují
Samotná větev Bin obsahuje vždy pouze prázdné commity — jeden pro každou publikovanou verzi — které slouží výhradně jako kotvy pro tagy. Skutečné binárky nejsou commitnuty jako sledované soubory ve stromu větve. Místo toho každý tag Bin/<version>-<platform> ukazuje na GitHub Release a skutečný archiv spolu se souborem s hashem SHA-256 je k vydání připojen jako asset vydání:
Bin/3.12.8-Unix (tag + GitHub Release)
├── python-3.12.8-Unix.zip
└── python-3.12.8-Unix.zip.hash
Samotný protokol Artifact Handleru není vázán konkrétně na GitHub Releases — pro Git hostingy bez ekvivalentního Releases API podporuje také binárky commitnuté přímo jako sledované soubory ve větvi
Bin(označené tagem podle verze/platformy). Tento repozitář používá režim assetů GitHub Release.
⚠️ Klonujte jen větev, kterou potřebujete
Tento repozitář může obsahovat metadata vydání napříč mnoha verzemi. Assety konkrétní verze vždy stahujte přes její GitHub Release, místo klonování celé historie větve Bin.
gh release download Bin/3.12.8-Unix --repo Embedbits/Artifact-python --pattern '*.zip'
Podporované platformy
| Kód platformy | Cíl | Triple python-build-standalone |
|---|---|---|
Unix | Linux x86_64 (glibc) | x86_64-unknown-linux-gnu |
Win | Windows x86_64 | x86_64-pc-windows-msvc |
DarwinARM | macOS arm64 | aarch64-apple-darwin |
Každý build je varianta install_only: soběstačná, přenosná distribuce CPythonu s kompletní standardní knihovnou (včetně pip) a bez dalších runtime závislostí nad rámec toho, co potřebuje samotná standardní knihovna.
Zahrnuté komponenty
| Komponenta | Popis |
|---|---|
python/python.exe | Hlavní spustitelný soubor interpretu CPython |
pip | Předinstalovaný, připravený k okamžitému použití |
| Standardní knihovna | Kompletní strom Lib/, tak jak ho dodává python-build-standalone |
Použití
Artefakt se instaluje automaticky během fáze nastavení artefaktů pomocí:
cmake -P Artifacts/Python/ArtifactConfig.cmake
Skript zajistí, že je interpret CPython dostupný, v případě potřeby rozbalí archiv a přidá jej do systémové proměnné PATH pro následující kroky buildu.
Pomocné API pro CMake
Python_ArtifactInit(${ARTIFACT_BIN_PATH})
Python_GetArtifactVersion(PYTHON_VERSION)
Python_ArtifactInit určí cestu k interpretu pro aktuální hostitelskou platformu a zpřístupní ji jako Python_EXECUTABLE. Python_GetArtifactVersion vrací řetězec s verzí CPythonu (x.y.z), která je aktuálně pro projekt nakonfigurována.
Verzování
Verze artefaktů přímo odpovídají verzím vydání CPythonu:
3.10.21, 3.11.9, 3.12.8, 3.13.5, ...
Nové verze publikuje Python_Importer.sh v repozitáři GithubArtifactsHandler, který sleduje vydání python-build-standalone, stahuje buildy install_only pro každou podporovanou platformu, přebaluje je do archivů .zip s ověřením SHA-256 a publikuje je jako GitHub Releases označené tagem podle verze a platformy.
Protože python-build-standalone při každém svém (datovaném) vydání znovu publikuje buildy pro všechny aktuálně podporované větve CPythonu, může se stejná verze CPythonu objevit v několika upstream vydáních — importuje se pouze nejnovější build.
Poznámky
- Není nutná instalace — build je přenosný a soběstačný; systémový Python není potřeba ani není ovlivněn.
- Offline použití je podporováno, jakmile je artefakt lokálně v cache.
- V pipelines Azure DevOps se doporučuje cachovat složku artefaktu, aby se zkrátila doba buildu.
Licence
CPython je distribuován pod licencí Python Software Foundation License (PSF License). Podrobnosti: https://docs.python.org/3/license.html
Projekt python-build-standalone obsahuje další komponenty třetích stran (OpenSSL, SQLite, libffi, ncurses, readline a další), každou pod její vlastní licencí — úplný seznam najdete v dokumentaci python-build-standalone.
Autoři
- Mr.Nobody — embedbits.com
Příspěvky jsou vítány! Otevřete prosím pull request.