Artefakt Python
Prenosná, samostatná distribúcia CPython, referenčnej implementácie programovacieho jazyka Python, zostavená z projektu python-build-standalone (udržiava ho Astral). Tento repozitár využíva Embedbits Platform Artifact Handler na vyhľadanie, stiahnutie, overenie a konfiguráciu interpretera Python v následných embedded build nástrojoch (build skripty, generátory kódu, nástroje na flashovanie/testovanie a podobné úlohy, ktoré potrebujú Python bez závislosti od toho, čo je nainštalované na hostiteľskom stroji).
Každá vetva v tomto repozitári plní osobitnú úlohu, čo umožňuje presnú kontrolu verzií a reprodukovateľné buildy naprieč projektmi.
Obsah repozitára
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
Úloha v platforme
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 následných projektoch odkazuje na tento repozitár ako na Git submodul. Počas konfigurácie CMake načíta ArtifactConfig.cmake, aby zistil, ktoré vydanie sa má stiahnuť, a potom stiahne a overí príslušný binárny archív z assetov GitHub Release danej značky.
Ako sa binárky publikujú
Samotná vetva Bin obsahuje vždy iba prázdne commity — jeden pre každú publikovanú verziu — ktoré slúžia výlučne ako kotvy pre značky. Skutočné binárky nie sú commitnuté ako sledované súbory v strome vetvy. Namiesto toho každá značka Bin/<version>-<platform> ukazuje na GitHub Release a skutočný archív spolu so súborom s hashom SHA-256 sú k tomuto vydaniu pripojené ako assety vydania:
Bin/3.12.8-Unix (tag + GitHub Release)
├── python-3.12.8-Unix.zip
└── python-3.12.8-Unix.zip.hash
Samotný protokol Artifact Handler nie je viazaný špecificky na GitHub Releases — podporuje aj binárky commitnuté priamo ako sledované súbory vo vetve
Bin(označené značkou pre každú verziu/platformu) pre Git hostingy bez ekvivalentného Releases API. Tento repozitár používa režim assetov GitHub Release.
⚠️ Klonujte iba vetvu, ktorú potrebujete
Tento repozitár môže obsahovať metadáta vydaní pre mnoho verzií. Assety konkrétnej verzie vždy sťahujte cez jej GitHub Release namiesto klonovania celej histórie vetvy Bin.
gh release download Bin/3.12.8-Unix --repo Embedbits/Artifact-python --pattern '*.zip'
Podporované platformy
| Kód platformy | Cieľ | 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 variant install_only: samostatná, prenosná distribúcia CPython s kompletnou štandardnou knižnicou (vrátane pip) a bez ďalších runtime závislostí nad rámec toho, čo potrebuje samotná štandardná knižnica.
Súčasti balíka
| Komponent | Popis |
|---|---|
python/python.exe | Hlavný spustiteľný súbor interpretera CPython |
pip | Predinštalovaný, pripravený na okamžité použitie |
| Štandardná knižnica | Kompletný strom Lib/, tak ako ho dodáva python-build-standalone |
Použitie
Artefakt sa inštaluje automaticky počas fázy nastavenia artefaktov príkazom:
cmake -P Artifacts/Python/ArtifactConfig.cmake
Skript zabezpečí, že interpreter CPython je dostupný, v prípade potreby rozbalí archív a pridá ho do systémovej PATH pre nasledujúce kroky buildu.
Pomocné API CMake
Python_ArtifactInit(${ARTIFACT_BIN_PATH})
Python_GetArtifactVersion(PYTHON_VERSION)
Python_ArtifactInit určí cestu k interpreteru pre aktuálnu hostiteľskú platformu a sprístupní ju ako Python_EXECUTABLE. Python_GetArtifactVersion vráti reťazec verzie CPython (x.y.z) aktuálne nakonfigurovanej pre projekt.
Verzovanie
Verzie artefaktu zodpovedajú priamo verziám vydaní CPython:
3.10.21, 3.11.9, 3.12.8, 3.13.5, ...
Nové verzie publikuje Python_Importer.sh v repozitári GithubArtifactsHandler, ktorý sleduje vydania python-build-standalone, stiahne buildy install_only pre každú podporovanú platformu, prebalí ich do archívov .zip s overením SHA-256 a publikuje ich ako GitHub Releases označené podľa verzie a platformy.
Keďže python-build-standalone pri každom vlastnom (dátumovom) vydaní znovu publikuje buildy pre všetky aktuálne podporované vetvy CPython, tá istá verzia CPython sa môže objaviť vo viacerých upstream vydaniach — importuje sa iba najnovší build.
Poznámky
- Inštalácia nie je potrebná — build je prenosný a samostatný; systémový Python nie je potrebný ani ovplyvnený.
- Offline použitie je podporované, keď je artefakt lokálne v cache.
- V Azure DevOps pipeline sa odporúča cachovať priečinok artefaktu, aby sa skrátil čas buildu.
Licencia
CPython sa distribuuje pod licenciou Python Software Foundation License (PSF License). Podrobnosti nájdete na: https://docs.python.org/3/license.html
Projekt python-build-standalone obsahuje ďalšie komponenty tretích strán (OpenSSL, SQLite, libffi, ncurses, readline a ďalšie), každý pod vlastnou licenciou — úplný zoznam nájdete v dokumentácii python-build-standalone.
Autori
- Mr.Nobody — embedbits.com
Príspevky sú vítané! Otvorte prosím pull request.