[python] Staistika python.org

superman feed na centrum.cz
Neděle Říjen 15 19:34:31 CEST 2006


> Jaky je rozdil mezi absolutne a relativne uvedenou cestou?

Pokud je program závislý na relativní cestě, pak je možné ho přemístit, 
aniž by bylo nutné cokoli upravovat. Běžná vlastnost mnoha programů. 
Nechápu, proč když třeba udělám command line filtr na výmaz komentářů ze 
souboru, proč musí být závislý na nějakém globálním nastavení registrů. 
To ho pak raději napíšu v C++, který žádné takové blbosti fakt 
nepředepisuje. A je to škoda, protože jak říkám, python bych rád použil.

> V cem je problem? Ty prece produkt distribuujes, pokud ho nainstalujes
> jinam, tak relevantnim zpusobem upravis spousteci skript.

Problém je prostě ten, že nemůžu mít program třeba na flashce, nebo na 
CD, nebo jinde, kde se cesty mění. Jasně, pokud jej někde napevno 
nainstaluji tak se asi nic neděje.

>>Navíc je 
>>otázkou, jestli se tam skutečně nastavuje vše.
> 
> Navic je otazka, co program provede za 666 sekund po startu, paklize
> uzivatel pije cerneho Kozla. Pardon, ja nemohl odolat.

Mě stačil pohled do registry monitoru co všechno za klíče v registru se 
pokouší číst. Ty názvy byly poměrně instruktivní a dá se z toho udělat 
představu co všechno čte za konfiguraci. Opravdu toho bylo docela hodně.

> Jen tak na okraj, chovani, kdy program nacte jednu sadu konfigu, aby
> pote mohl nacist jinou a puvodni hodnoty predefinoval, pokdu se lisi, je
> pomerne bezne.

To je samozřejmě pravda. Nicméně spousta programů umožňuje zakázat, aby 
se konfigy četly z určitého místa. Python to nedokáže. A závislost na 
registrech je dost nešťastná, protože nikdy nevíte, co všechno se přečte 
a co budoucí verze bude číst navíc. Prostě je to jen honička a když 
náhodou zapomenete něco předefinovat, pak Vám na potvoru python čte 
náhodně globální nastavení. To je prostě prasečina.

>>Stejně tak mě zajímá, jak uděláte program třeba s py2exe, aby byl 
>>nezávislý na nastavení systému. Protože to jako grafický program bude 
>>mít před sebou baťák, který nastaví cesty a pak ho spustí? To je dost 
>>nešťastné a neefektivní řešení.
> 
> Proc by to melo byt "neefektivni"?

Proč? Protože pak je možnost zkompilování do samostatné jedné binárky 
tak trochu nedokonalé. Já jsem schopen v pythonu vyrobit jedinou exe 
binárku, ke které nepotřebuji nic navíc, akorát tato binárka potřebuje 
baťák, abych obešel pitomost v tom, že to čte globální nastavení.

Vždyť řada programů je schopná brát defaultní cesty relativně vůči 
binárce, jen python prostě ne.

>>Jinak milión dolarů tomu, kdo mě poradí jak vytvořit pomocí py2exe 
>>binárku z pythonu, kterou je možné přejmenovat aby chodila. Když 
>>vytvořím binárku s názvem třeba program.exe tak chodí. Ale pokud jí 
>>přejmenuji třeba na programx.exe, tak skovčí s výjimkou a ani se 
>>nerozběhne. Je to takové dost nedokonalé. 
> 
> Jak zni ta vyjimka, jaky hazi backtrace?

Traceback (most recent call last):
   File "<install zipextimporter>", line 1, in ?
ImportError: No module named zipextimporter
Traceback (most recent call last):
   File "wdatadmin.py", line 1, in ?
ImportError: No module named auto_build_packages
Traceback (most recent call last):
   File "<install zipextimporter>", line 1, in ?

Jinak ono je taky nešťastné, že při použití některých modulů vyrábí 
py2exe programy, které na některých počítačích fungují a někde ne. Už 
jsem zjistil, že moduly mx se nesmí použít (dokonce je přímo v py2exe na 
moduly mx varování) a modul logger jsem taky s py2exe nerozchodil.

Přiznám se, že už jsem chtěl jednak upravit zdrojáky python interpreteru 
a přidat přepínač na příkazovou řádku, který by zakazoval číst globální 
nastavení a začal brát cesty relativně vůči umístění interpreteru a 
zkompilovat si tak vlastní binárku python interpreteru. Stejně tak jsem 
přemýšlel, že se pustím do úpravy py2exe, on je to relativně malý modul, 
aby četl moduly z aktuálního jména binárky. Jenže nemám čas a hlavně si 
říkám, jestliže takto často narážím na chyby, co budu upravovat příště.

Miloslav Ponkrác




Další informace o konferenci Python