Distribuce pro vývoj aplikací (C, Python)

kei.101

Distribuce pro vývoj aplikací (C, Python)
« kdy: 22. 02. 2011, 18:50:47 »
Dobrý den.

Chtěl bych se zeptat, jakou distribuci byste doporučili na vývoj programů v C a pythonu. Začínal jsem na Gentoo a teď už několik let používám Arch. Poslední dobou mě ale dost štvou rolling updates. Když něco napíšu v pythonu, skoro jistě to po pár updatech nefunguje nebo to nefunguje hned, protože mám zrovna nějakou nepříliš odladěnou verzi pythonu.

V tento moment mi například nefunguje podle očekávání ani:

Kód: [Vybrat]
#!/usr/bin/env python2

import sys

for line in sys.stdin:
    print line

Děkuji za názory.

JN
« Poslední změna: 23. 02. 2011, 00:22:16 od Petr Krčmář »


Re: Distribuce pro vývoj aplikací (c, python)
« Odpověď #1 kdy: 22. 02. 2011, 19:30:33 »
Updatuju sa len balicky takze pokial chces aby sa ti neupdatoval python, stiahni, skompiluj a nainstaluj si ho. Pokial ti prekaza rolling distro tak prejdi na nejake "nerolling" napr. Ubuntu, Fedora alebo OpenSUSE. Tam by si nemal mat problemy. :)
« Poslední změna: 22. 02. 2011, 20:29:18 od Michal Štrba »

Re: Distribuce pro vývoj aplikací (c, python)
« Odpověď #2 kdy: 22. 02. 2011, 19:36:02 »
A updaty by sa mali dat aj zakazat pre ten ktory balik. Neviem ako sa to robi v Archu to snad najdes v dokumentaci.

kei.101

Re: Distribuce pro vývoj aplikací (c, python)
« Odpověď #3 kdy: 22. 02. 2011, 23:12:11 »
No ono to není jen o zakázání aktualizace. Já chci mít aktuální interpreter, ale chci ho mít také stabilní a problém Archu je, že se nelze vrátit ke staré verzi.. Myslím, že zase zkusím oživit vzopmínky na Gentoo, tam to s těmi verzemi bylo přívětivější..

Kaemon

Re: Distribuce pro vývoj aplikací (C, Python)
« Odpověď #4 kdy: 23. 02. 2011, 06:46:01 »
Lze se vrátit ke starší verzi. Stačí jí v /var/cache/pacman/pkg najít, a nainstalovat pomocí pacman -U


kei.101

Re: Distribuce pro vývoj aplikací (C, Python)
« Odpověď #5 kdy: 23. 02. 2011, 11:16:36 »
Jojo, už jsem viděl návod. Jenomže já na notebooku s 8GB diskem rád píšu "pacman -Sc" :) takže to tam už nenajdu a ostatní postupy jaksi nefungují. Už to ale není nutné řešit, protože chyba byla ve mě, ta 2.* verze pythonu funguje pro mě stejně nepředvídatelně i třeba v PCBSD. Ale divím se, že v pythonu v3.* to funguje přesně, jak bych čekal. no nic..

Mordae

Re: Distribuce pro vývoj aplikací (C, Python)
« Odpověď #6 kdy: 23. 02. 2011, 13:59:33 »
Ne vyvoj Fedoru. Je to nove a stabilni. A kdyz potrebujes ultra-nove veci, tak sahnes do rawhide. A kdyz jeste novejsi, tak vezmes .src.rpm z rawhide, upravis .spec file pro novejsi verzi a zbuildujes lokalne.

zatt

Re: Distribuce pro vývoj aplikací (C, Python)
« Odpověď #7 kdy: 23. 02. 2011, 15:42:12 »
Muzu se trosku off-topic zeptat, jak se choval ten skript z uvodniho dotazu?

FrostyX

Re: Distribuce pro vývoj aplikací (C, Python)
« Odpověď #8 kdy: 23. 02. 2011, 21:07:06 »
K tomu archu. Lze se vrátit na starší verzy i s promazaným /var/cache. Stačí si stáhnout libovolnou verzy balíku třeba odtud http://arm.konnichi.com/search/ a pak již zmíněné pacman -U

broukoid

Re: Distribuce pro vývoj aplikací (C, Python)
« Odpověď #9 kdy: 23. 02. 2011, 22:08:09 »
Tipuju ze problem nebude vubec v distribucich, ale spis v prvni radce prikladu - konkretne v "python2" - python2 na vetsine distribucich neni nic. Bud to zmen na "python", nebo pokud potrebujes nejakou konkretni verzi tak treba na python2.5.

Re: Distribuce pro vývoj aplikací (C, Python)
« Odpověď #10 kdy: 24. 02. 2011, 16:08:29 »
Tipuju ze problem nebude vubec v distribucich, ale spis v prvni radce prikladu - konkretne v "python2" - python2 na vetsine distribucich neni nic. Bud to zmen na "python", nebo pokud potrebujes nejakou konkretni verzi tak treba na python2.5.

A to jste prave na omylu. Arch je jedna z distribuci ktera presla na Python 3 (python) a Python 2.7.1 lze nainstaloval pro potreby zpetne kompatibility a je potreba pro nektere balicky, ktere jeste nebyly na python3 naportovany. Balicek s  Python 2.7.1 se v archu jmenuje python2 a na binarku je defaultne vytvoren symbolicky link /usr/bin/python2.
viz http://www.archlinux.org/news/python-is-now-python-3/.
Takze ten script je napsany spravne a me by taky zajimalo jak "nepredvidatelne" se choval.

kei.101

Re: Distribuce pro vývoj aplikací (C, Python)
« Odpověď #11 kdy: 25. 02. 2011, 11:00:29 »
Zkuste si na archu porovnat chování:

Kód: [Vybrat]
#!/usr/bin/env python
 
import sys

f = open(sys.argv[1])
for line in f:
    print(line, end='')

a

Kód: [Vybrat]
#!/usr/bin/env python2
 
import sys

f = open(sys.argv[1])
for line in f:
    print line,

Pro volání
Kód: [Vybrat]
./test.py /etc/passwd fungují stejně, pro
Kód: [Vybrat]
./test.py /dev/tty se python ve verzi 2 chová jinak a podle mého názoru divně (mimochodem stejně, jako když se rovnou iteruje přes sys.stdin)

andro

Re: Distribuce pro vývoj aplikací (C, Python)
« Odpověď #12 kdy: 25. 02. 2011, 12:28:18 »
Mas bajecny styl popisu problemu. Ve stejnem duchu ti naprosto presne mohu rici, v cem je problem - je to rozbity!!!

Harvie

Re: Distribuce pro vývoj aplikací (C, Python)
« Odpověď #13 kdy: 25. 02. 2011, 12:52:41 »
Jojo, už jsem viděl návod. Jenomže já na notebooku s 8GB diskem rád píšu "pacman -Sc" :)

Hele existuje "Arch Rollback Machine", coz je server s obrovskym diskovym polem ze kteryho si muzes stahnout verzi libovolnyho balicku z libovolnyho data nekolik let zpatky, samozrejme nemusis vsechny balicky ukladat u sebe.

Jinak ta nekompatibilita spocivala v prepnutim z pythonu 2 na python 3. Ja osobne bych ti radil vyvijet v pythonu 3, pokud chces starsi verzi, tak to musis ve skriptu nahore (v hashbangu) napsat.

kei.101

Re: Distribuce pro vývoj aplikací (C, Python)
« Odpověď #14 kdy: 25. 02. 2011, 13:30:46 »
Mas bajecny styl popisu problemu. Ve stejnem duchu ti naprosto presne mohu rici, v cem je problem - je to rozbity!!!

Omlouvám se, ale měl jsem pocit, že je zřejmé, co skript demonstruje. Jde o to, že přes řádky běžného souboru lze v pohodě iterovat, ale přes řádky načtené ze standardního vstupu iterovat nelze (v python2). Zkuste zpustit ten pvní skript s parametrem /dev/tty a zadávat řádky z klávesnice a pak spusťte ten druhý skript se stejným parametrem a zadávejte řádky z klávesnice. V prvním případě (verze 3) vám je bude program duplikovat (správné chování), v tom druhém ne. Alespoň u mě to tak funguje. Považuji to za chybu, protože nechápu, proč by se mělo v unixu rozlišovat mezi deskriptorem běžného souboru a standardním vsupem. Vždyť i v C je to FILE jako FILE a to i ve windows! Tak mě napadá, zkusit to ještě ve windows..