Ubuntu 24.04 - python hibák

Fórumok

Lehet, hogy én csinálok valamit nagyon félre, de jó ideje szenvedek a 24.04-es kiadással. Ami minden egyes telepítésnél előjön, az alábbi python hibák, és emiatt sok funkció és/vagy alkalmazás (ami pythonra épül) nem használható:

SyntaxWarning: invalid escape sequence '\w'
SyntaxWarning: invalid escape sequence '\*'
SyntaxWarning: invalid escape sequence '\s' 
SyntaxWarning: invalid escape sequence '\('

Hasonló hibákra példa ITT és ITT

Sajnos a 24.04 hemzseg ezektől.

Tapasztalta más is ezeket a hibákat? Sajnos sehol nem találtam erre javításokat.

Hozzászólások

Elvileg vannak kint már frissítések erre.

libpython3-stdlib/noble-updates 3.12.3-0ubuntu2 amd64
python-apt-common/noble-updates 2.7.7ubuntu3 all
python3-apt/noble-updates 2.7.7ubuntu3 amd64
python3-minimal/noble-updates 3.12.3-0ubuntu2 amd64
​​​​​​​python3/noble-updates 3.12.3-0ubuntu2 amd64

Ott van a hibajelentésekben, hogy az okozza a gondot, hogy az érintett appok nem kompatibilisek a Python 3.12 változásaival. Nem Ubuntu specifikus, hanem Python specifikus a probléma. Azért jön elő 24.04-en, mert az a Píthon 3.12-t szállítja már alapból.

A megoldás, ha a készítők javítják a kódjukban az érintett részeket. A leírás szerint mindössze egy "r" kell az expression string elé (raw, pl. r'\d' a sima '\d' helyett), hogy ne kelljen dupla " jel a \ köré. A változtatás visszafelé kompatibilis, a régebbi Python verzióknak állítóleg nem okoz gondot, hogy ha az expression string raw.

Köszönöm. Nekem is ez jött le, de nem voltam biztos a válaszban. A megdöbbentő az, hogy alap alkalmazásoknál vagy komponenseknél is mutatkozik, mivel friss telepítéskor is ebbe futok bele. Egy rakás XFCE4 komponens nem indul, power manager sem kezeli le a gépet rendesen (suspend és wakeup gondok). Mindezen problémás részek a pythonra épülnek.

Két dolgot nem értek: egyrészt a Python fejlesztői miért csinálnak ilyen kanyarokat, hogy ilyen gyökeres szintaktikai véltoztatásokat eszközölnek. A másik az, hogy a linuxos fejlesztők miért egy ilyen kiszímáthatatlan nyelvezetben írják meg az alkalmazásokat.

Nem teljesen pontos a dolog, nem ok csinaltak kanyarokat.

Ugye egy stringbe - C ota, talan meg regebben - be lehet illeszteni speci karaktereket. Ilyen a \n, \t (ujsor, tab), stb. Ha \ kellene bele, annak \\ a jele, ezzel lehet escape-elni.

Regexpben sok \ kezdetu dolog van, mert ott ennek mas specialis jelentese van, pl. \d a decimalis.

Ha mondjuk szamokra akarsz illeszteni valamit, akkor \d+ fogja elfogadni. Ahhoz, hogy ezt stringbe tedd, "\\d+"-t kellett irnod, mert - a C-hez hasonloan - az elso\ escape-eli a masodikat.

Ez nagyobb regexpeknel nagyon kenyelmetlen, ezert kitalaltak a raw stringet: ebbe nem lehet ujsort, tabot, es hasonlot tenni, de nem is kell semmit escape-elni - regexpre nagyon kenyelmes tud lenni (amugy nem ez az egyetlen ilyen, pl. ott az f-string, amibe formazhato valtozokat lehet szurni).

Persze ha egy sima stringbe olyan szekvenciakat teszel, ami invalid, valamit fog kezdeni vele. Sok ertelme nincs annak, hogy direkt ilyet tegyel - hibat viszont okozhat. Eddig ugy kezeltek le a hibat, hogy ugy vettek, mint ha nem akaral specialis jelentest, szoval a \\d helyett a \d is jo volt neki. Viszont ha a \d (vagy amit irtal) pont rendelkezik ilyennel, akkor a regexped fordul fel, szoval ez nem jo. Most meg szol, hogy a hibas szekvencia az bizony hibas szekvencia.

A strange game. The only winning move is not to play. How about a nice game of chess?

Mivel már honapok óta szenvedek az Ubuntu hülyeségeivel, ismét visszakanyarodtam a Debianhoz: az egyik gépemen párhuzamosan az fut, ugyanazon céllal és ugyanazon szoftverekkel. A Debiannal semmi gond.

Egy esélyt még akartam hagyni az Ubuntunak, de most már végleg dobom a kukába. évről-évre szarabb az egész. A Debian viszont tartja a szinvonalat és az erős stabilitást.

Ha jól értem az előzményeket, akkor azért dobod az ubuntut, mert azon egy újabb python verzió van, ahol a python fejlesztők alverzióban eltörték a kompatibilitást? :D
A debian pedig azért tartja magát, mert abban még a régebbi verziók vannak?

Abban persze van logika, hogy mire a debian elér ezekhez a verziókhoz, addigra talán az eljterjedtebb cuccokat átkalapálnak olyanra, hogy fussanak új verzióval is.

Mondjuk az ubuntus maintainereknek ezt illett volna kezelni. Ubuntu csomagok törnek egy másik ubuntu csomag miatt, ha jól értem. Ez így milyen? Vagy nem bántják a pythont, vagy javítják és jelentik a fejlesztőknek az emiatt eltörött csomagokat. Ez így nagyon amatőr.

Én inkább azt mondanám, hogy az open source szoftverkészlet, amit az Ubuntu is hoz magával, nem akarja tartani a lépést az Ubuntuval. Miközben a két éves LTS verziók azért nem olyan sűrűn jönnek, és jó előre tuni, mi lesz benne, tehát van idő felkészülni a változásokra. A Python 3.12 nem a kiadás előtt került bele hirtelen. Ráadásul ez a verzió már 2023. 10. hóban megjelent, azóta mostanra pláne lett volna idő azokat az "r" betűket beírni a forrásokba...

A Debian még szép, hogy jó, mert abban Python 3.11 van, ami a (fent kifejtett) hibás szintaktikát is megeszi. A Debian 13-ba van a Python 3.12 előirányozva, de mérget vennék rá, hogy amikor a Debian 13 majd valamikor megjelenik, még mindig lesz olyan gyakran használt Python kód/szoftver, ami ezt a hibát dobálja, mert nincs javítva.

Olyan ez, mint a Java. A Java-t mindenki mindig szidta/szidja, hogy "kiszámíthatatlanul változik", deprecated meg obsolote lesz benne ez-az, és sok gondot csinál. Közben meg 1-1.5 évvel a változás előtt ki van adva, mi fog változni, csak a fejlesztők nem törődenek vele, így elavultak a Java-s programok a Java-hoz képest. Erről nem a nyelv tehet. Ahogyan a Python esetében sem.

Én pl. azért nem tudom frissíteni a desktop-omon a Mint 21.3-at 22-re, mert néhány külső forrásból is van rajta ismert, széles körben használt szoftver, de azoknak még nincs Ubuntu 24.04-es csomagja/tárolója a mai napig. Meg itt is van olyan, hogy ami pl. libssl függő, abból kellene új, mert libssl 1.1 helyett libssl 3 van, aminek sok szoftver nem ment még utána (ez frissen telepített Debian 12-nél is gond, ami régebbi dolog a 24-es Ubuntunál...), libssl 1.1 hiányában meg nem települ.