Portál AbcLinuxu, 8. května 2025 01:02

Dotaz: Python si z nás vystřelil? (Jeden jazyk, 2 verze.)

4.2.2015 20:25 RickettsialPox | skóre: 20 | Praha, Žižkov
Python si z nás vystřelil? (Jeden jazyk, 2 verze.)
Přečteno: 909×
Odpovědět | Admin
Dobrý den, už mám Pythonu plné zuby. Jeho syntaxi jsem ještě akceptovat dokázal, byť jsem pro ni neměl pochopení. Leč kdo přejde na vyšší verzi a zruší podporu nižší? :D To mám jako předělávat každý program, který si stáhnu? Doposud jsem měl štěstí, chtělo to přepisovat jen print - na verzi funkce v jádře - tedy se závorkami. Leč nyní nefunguje mnohem větší program, ve kterém budu problematická místa hledat hodiny... (Nefunguje mi každý program - musím každý přepisovat - a to je pak vskutku ubíjející.) "PyInit_ is used in Python3 instead of init_" No a můj problém:

File "fife.py", line 28, in <module> _fife = swig_import_helper() File "fife.py", line 24, in swig_import_helper _mod = imp.load_module('_fife', fp, pathname, description) File "/usr/lib/python3.4/imp.py", line 243, in load_module return load_dynamic(name, filename, file) ImportError: dynamic module does not define init function (PyInit__fife)

Tak alespoň prosím poraďte kde co přepsat... Nešlo by povolit starou syntaxi?
Největší prvek každého hrdinského činu je strach. Život definuji jako "/dev/life >> /dev/null".

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

4.2.2015 21:30 Petr Šobáň | skóre: 80 | blog: soban | Olomouc
Rozbalit Rozbalit vše Re: Python si z nás vystřelil? (Jeden jazyk, 2 verze.)
Odpovědět | | Sbalit | Link | Blokovat | Admin
A problém je jaký?

Tak ten jazyk nepoužívej když ti nevyhovuje.

A pokud vyžaduješ starší verzi Pythonu tak si nainstaluj starou verzi.
4.2.2015 22:32 pako
Rozbalit Rozbalit vše Re: Python si z nás vystřelil? (Jeden jazyk, 2 verze.)
Přesně tak.

Živý jazyk se vyvíjí. Co bylo OK v C90 nemusí být OK v C99 nebo C11 (př. implicitní int pro typedef).
4.2.2015 22:49 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: Python si z nás vystřelil? (Jeden jazyk, 2 verze.)
No teda nevím, jestli toto bylo zrovna dobré přirovnání…
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
4.2.2015 23:31 pako
Rozbalit Rozbalit vše Re: Python si z nás vystřelil? (Jeden jazyk, 2 verze.)
Proč? Protože C je mnohem konzervativnější a přepisování bude méně? Když napíši projekt podle standardu C99, tak nemá cenu řešit, jak moc práce je z toho udělat C90 nebo C11 (byť jsou ty rozdíly menší než mezi verzemi Pythonu). Jak psal Petr Šobáň, pro projekt v Python X.Y použiji Python X.Y.
5.2.2015 08:20 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: Python si z nás vystřelil? (Jeden jazyk, 2 verze.)
Ano jeden důvod je, že ty přepisy prakticky jsou jen ojedinělé a většina „dobrého kódu“ je ani nemá, a druhý je, že můžu přeložit jednotky různě a následně je spojit a na provozování „aplikace“ to pak nemá žádný vliv (klidně dva projekty dle jednotlivých norem spojím a použiji a nic mě to nestojí…).
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
5.2.2015 23:45 pako
Rozbalit Rozbalit vše Re: Python si z nás vystřelil? (Jeden jazyk, 2 verze.)
Takže si projdeme, co nám řekli Šangala a luky:

V obecné rovině: Interpretovaný a kompilovaný jazyk nejsou totéž. Konkrétněji pak: C a Python jsou dva různé jazyky.

Myslím, že ani v jednom nebude vážnějších sporů.

K tomu bych si dovolil říci, že nikdo nerozporoval návrh Petra Šobáně, který bych si dovolil parafrázovat alespoň v jeho části jako: Podobně jako u kompilovaného jazyka musíte linkovat správné verze knihoven a binárního formát (asi nebude problém, pokud nebudete míchat systémy a platformy), musíte u interpretovaného jazyka používat interpretr ve správné verzi.

Ani nikdo mou poznámku: že ani jiné (byť starší a konzervativnější) jazyky neznamenají, že specifikace všech verzí jsou shodné nebo alespoň zpětně nebo dopředně kompatibilní.

Můžeme se přít o míře rozdílů mezi verzemi a jejich únosnosti, ale na samotném konstatování to moc nemění. A mimochodem není zas tak těžké psát kód, který poběží na Pythonu 2.7 i 3.x. Je-li to vůbec s ohledem na poslední větu o dva odstavce výše potřebné nebo žádoucí.

6.2.2015 09:28 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: Python si z nás vystřelil? (Jeden jazyk, 2 verze.)
Ano, rozdíl je jen v míře a míra mi připadla diametrálně rozdílná - to je celé.
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
5.2.2015 11:24 luky
Rozbalit Rozbalit vše Re: Python si z nás vystřelil? (Jeden jazyk, 2 verze.)
Zasadni rozdil je v tom, ze i novy prekladac C umi prelozit stary kod. Novy python stary kod nespusti.
Řešení 1× (Jakub Lucký)
xxxxxx avatar 4.2.2015 22:30 xxxxxx | skóre: 23
Rozbalit Rozbalit vše Re: Python si z nás vystřelil? (Jeden jazyk, 2 verze.)
Odpovědět | | Sbalit | Link | Blokovat | Admin
Porting Python 2 Code to Python 3 a 2to3 - Automated Python 2 to 3 code translation
4.2.2015 22:37 chrono
Rozbalit Rozbalit vše Re: Python si z nás vystřelil? (Jeden jazyk, 2 verze.)
Odpovědět | | Sbalit | Link | Blokovat | Admin
Python verzie 2.7 bude podporovaný do roku 2020. ;)
4.2.2015 23:11 SPM | skóre: 28
Rozbalit Rozbalit vše Re: Python si z nás vystřelil? (Jeden jazyk, 2 verze.)
Odpovědět | | Sbalit | Link | Blokovat | Admin
Zajímavý je, že na python, kde zpětná kompatibilita není akorát mezi major verzema, které za několik desítek let vyšly 3, se nadává... ale na PHP, kde každý minor release něco změní a aplikace přestane fungovat, na to tu hejty nejsou :)
Řešení 4× (Jakub Lucký, SPM, Jesus Jimenez, mimi.vx)
Josef Kufner avatar 4.2.2015 23:41 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: Python si z nás vystřelil? (Jeden jazyk, 2 verze.)
Protože PHP je taková kopa hnoje, že se tam takové detaily ztratí.
Hello world ! Segmentation fault (core dumped)
AraxoN avatar 6.2.2015 11:02 AraxoN | skóre: 47 | blog: slon_v_porcelane | Košice
Rozbalit Rozbalit vše Re: Python si z nás vystřelil? (Jeden jazyk, 2 verze.)
Řešení 4× (Jakub Lucký, Heron, SPM, Jesus Jimenez)
Aj keby to 100x bola pravda, nechápem ako je táto odpoveď riešením dotazu o Pythone? :-D
5.2.2015 11:31 Kit | skóre: 45 | Brno
Rozbalit Rozbalit vše Re: Python si z nás vystřelil? (Jeden jazyk, 2 verze.)
Máš si psát testy, pak tě přechod mezi verzemi PHP nepřekvapí.
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
5.2.2015 20:22 SPM | skóre: 28
Rozbalit Rozbalit vše Re: Python si z nás vystřelil? (Jeden jazyk, 2 verze.)
Jako uživatele překvapí. Stačí udělat upgrade na serveru a půlka věcí nefunguje; na mnoho z nich ta novější fixnutá verze typicky není. (A pořád mi přijde jako obrovská kravina měnit API takhle často...)
Řešení 2× (mimi.vx, rADOn)
Queria Sa-Tas avatar 5.2.2015 20:38 Queria Sa-Tas | skóre: 8 | Brno
Rozbalit Rozbalit vše Re: Python si z nás vystřelil? (Jeden jazyk, 2 verze.)
Odpovědět | | Sbalit | Link | Blokovat | Admin
Jak tu psali, normalne neprepisujes (obzvlast) cizi app z py2x na py3x, mozna se v posledni dobe uz neco pohlo, ale co vim tak vetsina dister ma moznost mit v bin python, python2, ...2.7, python3, ... castecne jako symlinky apod.

Pak uz je na kazde app aby mela spravny hashbang/wrapper apod. A ono je to na komunite kazde z nich aby si rozhodli co budou pozadovat pro beh a pripadne to zmenit (at uz mezi verzema pythonu nebo jazyka samotneho atd) - kazdopadne dost z nich by mohlo tvuj patch na podporu py3 uvitat.

Pokud tedy chces resit prepis, at uz pro sebe ci poslat to projektum zpet, pak muzu doporucit ty jiz zminene odkazy ohledne portovani a pripadne jeste obcas/casto pouzivany six ktery muze pomoci udrzet kompatabilitu s py2/3 zaroven s jednim kodem za cenu jedne zavislosti navic (ale nemusi to byt vzdy bez problemu) a pripadne tox pro zjednoduseni buildovani/testovani vice verzi naraz.
Řešení 1× (mimi.vx)
6.2.2015 10:02 lofcek
Rozbalit Rozbalit vše Re: Python si z nás vystřelil? (Jeden jazyk, 2 verze.)
Odpovědět | | Sbalit | Link | Blokovat | Admin
Myslim, ze Vas je na python skoda. Nechajte tuto pracu niekomu inemu, verte mi najde sa habadej programatorov, co by si uzili syntax a sice bez nadsenia, ale s ovela mensim sebazaprenim ako vy by zvladli aj tie konverzie.

Dobra sprava je, ze ziadne dalsie komplikacie spatnej kompatibility sa nechystaju a od roku 2008, ked vysiel prvy krat python3, by uz vsetky kniznice mali byt dostupne aj pre trojku. Ak niektora nie je, je to neklamny znak toho, ze jej udrzba je minimalna a takej kniznici dat radsej pokoj.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.