Vetsinu pythonu jedeme v lambde. Mame docker v ECR co aktualizujeme automaticky daily na minor verze podobne jak je uvedeno v tomto prispevku.
Kupodivu nam tyhle daily builds jeste nezpusobily zadny problem, ale kdyby snad, mame dostatecny monitoring, takze bychom vedeli hned.
A pak mame interni proces, kdy kazde 2-3 mesice upgradujeme manualne na nove major verze.
Zatim to vypada, ze takhle to staci a s upgrady nemame problemy, tim mam na mysli, ze ty 2-3 mesice jsou dostatecne casto na to, aby upgrade na major verze byl otazkou pul dne jeden developer, vetsinou je to ale otazka hodiny dvou.
Taky hlidame zranitelnosti pres 3rd party, takze kdyby neco vazneho, tak vime.
Ale temer vsechny nase projekty jsou ted “zive” tj kontinuelne se na nich pracuje. Az nektere servicy budou dliuhodobeji bez vyvoje, uvidime co se bude dit - to je vzdycky tezsi vsechno to uhlidat a udrzovat up to date - je to potom spise na rozumnych internich procesech a jejich duslednem dodrzovani.
Většinou aktualizuji jednotlivé balíčky až v případě, že je v nové verzi něco, co potřebuji, nebo v té staré už něco nefunguje.
Plošnou aktualizaci/instalaci balíčků pro nějaký projekt bych řešil s pomocí
python3 -m pip install -r requirements.txt
Jiná věc je hlídání si konkrétních verzí některých velkých balíků, například verze Djanga nebo konektoru pro databázi.
A při aktualizaci těchto velkých balíků se často svezou i aktualizace některých menších.
Take se priklanim k deterministicke sprave zavislosti, kterou pip (v dostatecne mire) neposkytuje. Ale Poetry pro me bylo velkym zklamanim. Ke sve temer uplne spokojenosti pouzivam PDM. U malych/jednoduchych/podle ucebnice projektu je to uplne jedno, ale co se tyce nekterych specifickych potreb predevsim v enterprise, pdm odvadi mnohem lepsi praci. Prikladem budiz volba resolvovaci strategie, podpora mono-repo struktury projektu nebo podpora PEP-582. IMO take vyvojari/komunita kolem pdm je mnohem vstricnejsi nez ta kolem poetry.
Uznávám že poetry mi sedlo a přišlo lepší než pipenv. Oba projekty minimálně strhly pozornost na řešení tohoto problému. Ale oba mě něčím štvali. Doufám že to v budoucnu nebudu na rozumnou správu balíků potřebovat nic externího.
Jinak jsem to dohledal, ano opravdu se tu píše:
Use pip-tools, Pipenv, or poetry to generate the fully-specified application-specific dependencies, when developing Python applications.
https://packaging.python.org/en/latest/guides/tool-recommendations/?highlight=poetry
Otázkou je, jak dlouho bude trvat, než to někdo konečně vyřeší v rámci pipu samotného. Tohle je otřes a v případě knihoven (což není aplikace) to je stejně diskutabilní. https://github.com/pypa/pipenv/issues/1911
6. 2. 2023, 10:30 editováno autorem komentáře
> Use pip-tools, Pipenv, or poetry to generate the fully-specified application-specific dependencies, when developing Python applications.
Ze tam nemaji vyjmenovane vsechny nastroje, ktere to umi, jeste asi nic neznamena. Pdm je vic pep compliant nez poetry. Ale kazdy nastroj je vyrazny posun od pipu.
> Otázkou je, jak dlouho bude trvat
IMO dlouho. Tak jako vsechno v Pythonu. Reseni zavislosti je jen jednou polozkou na dlouhem seznamu veci, ktere be jeden cekal implementovane uz pred dekadou a stale nic. Pokud jde o enterprise featury, moc se na to netlaci. Je to asi dane publikem jazyka. Cimz nechci rict, ze by python byl jen pro hobby projekty, ale u byznys jazyku jako Java, C#, C++, atd., at uz si o nich myslime cokoli, je ta podpora proste jina. A u novych jazyku je vetsina tech feature implementovana uz od zacatku. Staci si porovnat Rust a Python a cloveku hned ukapne nad Pythonem slzicka.
Mrknu na pdm. Díky za tip! A souhlasim. Ja sice stale zustavam u Pythonu, ale casto koukam jinam a nestacim se divit.
Java napr. ma dobry tooling, ze ktereho by se dalo lecos okoukat. Problem Pythonu je ,ze se vuci enterprise a Jave znacne vymezoval... viz Python is not Java. Ze Python nema spoustu veci co davno melo byt je kvuli tehle zamrzle nature. Python bytecode se napr. meni s kazdou major verzi... sledovani VM problem, nikdo neresi. Jednotna distribuce vysledne aplikace na prd atd a atp.