Preskočiť na hlavný obsah

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 platformyCieľTriple python-build-standalone
UnixLinux x86_64 (glibc)x86_64-unknown-linux-gnu
WinWindows x86_64x86_64-pc-windows-msvc
DarwinARMmacOS arm64aarch64-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​

KomponentPopis
python/python.exeHlavný spustiteľný súbor interpretera CPython
pipPredinštalovaný, pripravený na okamžité použitie
Štandardná knižnicaKompletný 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​

Príspevky sú vítané! Otvorte prosím pull request.