zásadní problém pythonu je v tom, že nemá jen python závislosti, ale často se buildí různé C/C++/Rust moduly a ty mají svůj balíčkovací systém. Udělat poté rebuild nějakého balíčky ze zpravidla u pythonu nemožné, musí se ručně probrat zdrojové repo, dokumentace a dopátrat se k tomu.
Tak třeba probíhá implementace v nixpkgs, který tady je zmíněný nebo třeba podobně to dělá i conda balíčkovací systém.
Python je v tomhle největší peklo, všichni stahují binární bloby, při stahování z pypi se neověřují ani checksumy, netušíš, co je obsahem a pokus o build z repa končí v nekonečném debugování.
Ty buildy jdou dělat i u balíčků s nativním kódem. Vyžaduje to mít nainstalovaný ekosystémy (třeba GCC, Clang, Rust), ale my třeba hermetic buildy děláme - trvá to, ale jde to.
checksumy u wheels se snad ověřují ne? Když byl problém se sítí, tak to běžně padalo u špatných hashů. V lockfilech to vypadá nějak takto:
wheels = [
{ url = "https://files.pythonhosted.org/packages/63/97/77cb2450d9b35f517d6cf506256bf4f5bda3f93a66b4ad64ba7fc917899c/aiohttp-3.12.15-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:802d3868f5776e28f7bf69d349c26fc0efadb81676d0afa88ed00d98a26340b7", size = 702333, upload-time = "2025-07-29T05:50:46.507Z" },
{ url = "https://files.pythonhosted.org/packages/83/6d/0544e6b08b748682c30b9f65640d006e51f90763b41d7c546693bc22900d/aiohttp-3.12.15-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f2800614cd560287be05e33a679638e586a2d7401f4ddf99e304d98878c29444", size = 476948, upload-time = "2025-07-29T05:50:48.067Z" },
{ url = "https://files.pythonhosted.org/packages/3a/1d/c8c40e611e5094330284b1aea8a4b02ca0858f8458614fa35754cab42b9c/aiohttp-3.12.15-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8466151554b593909d30a0a125d638b4e5f3836e5aecde85b66b80ded1cb5b0d", size = 469787, upload-time = "2025-07-29T05:50:49.669Z" },
12. 8. 2025, 12:25 editováno autorem komentáře
my to také dělat musíme, ale je to dost práce s každým balíčkem a ještě se tam objevují regrese. Občas není jasné vůči čemu to je v pypi builděno nebo jde vidět, že sice v kódu buildí proti nové verzi, při buildu používají asi nějakou cache a mají tam starou.
Mno, https://pip.pypa.io/en/stable/topics/secure-installs/#secure-installs. Wheels není vše, co pip stahuje, že a ty hashe přichází stejným kanálem.