[python] py2exe problém

superman feed na centrum.cz
Úterý Září 19 13:01:03 CEST 2006


Dobrý den,

nevidím problém v nutnosti instalaci pythonu, ale v tom, že chci 
vytvořit samostatný program, který je ve svém adresáři, nejsou v něm 
přímo zdrojové kódy (čímž už máte problémy s verzí globálně 
instalovaného pythonu) a není závislý na ničem mimo svůj adresář snad 
kromě systémových souborů a api.

A hlavně, chci se spolehnout, že když takový program odzkouším na třech 
počítačích s různou konfigurací, že budu mít velkou šanci, že pojede i 
na čtvrtém se stejnou konfigurací. A to se bohužel po použití py2exe 
neděje, a je dost náhoda, jaké chybějící moduly ohlásí.

Mě by bohatě stačilo, kdyby fungovala py2exe fungovala jak má. Kdybych 
věděl, že když nahlásí, že vše je v pořádku, a žádné moduly nechybí, tak 
abych pak nedostával výjimky na chybějící moduly na jiných počítačích. 
Já vlastně jenom chci, aby to plnilo základní funkčnost, protože pokud 
py2exe nedokáže vytvořit bezchybnou binárku, pak je jeho existence 
trochu zbytečná.

Té chybě s ntdll.dll se nedivím, protože windows mají kernelové api, 
kterým se říká native api a ntdll.dll není nic jiného, než vyvedení 
některých funkcí z kernelu ven. Ale protože je to nízká kernelová 
záležitost, může to být (i když zatím moc není) silně windows version 
depended a naprostá většina funkcí z ntdll.dll jsou nedokumentované a 
pouze pro vnitřní použití microsoftem. Každý modul, který to používá by 
měl mít sakra pádný důvod proč použít ntdll.dll a ne standardní api 
operačního systému. Bohužel stejný nešvar je v CygWin, kde používají 
ntdll.dll na naprosto běžné souborové operace. Navíc si málokdo, kdo se 
pustí do použití ntdll odpustí používání nedokumentovaných funkcí a pak 
je to prasečina. Prostě používání ntdll.dll pro normální programy je 
pitomost.




Roman Miklos napsal(a):

> 
> I ja som pouzival Py2exe. Robil maly program, ktory pristupoval z PC na 
> AS/400 a robil tam nejake SQL-statistiky. Nepouzival som ziadne exoticke 
> moduly, ale len to co je dodavane s ActivePythonom (Tkinter ...atd). 
> Vysledok bol, ze na pojom pocitaci a niektorym kolegom to bezalo ok, ale 
> asi dvom dalsim kolegom to vyhadzovalo vo Windowse chybu "...faulting 
> module ntdll.dll...fault address 0x00011e58". Zatial sa to nepodarilo 
> vyriesit...
>  
> Podobne ako ViNiL ale nechapem, preco v nutnosti instalacie Pythonu 
> vidis nejaky problem.
> Je to presne to iste, ako s inymi nastrojmi: ked robis v Jave musis 
> instalovat Javu, ked robis v Perle musis instalovat Perl, ..atd
> Exe je i tak obmedzene iba na jednu platformu. Naproti tomu ked napises 
> skript v Pythone univerzalne, moze ti bezat bezo zmeny na viacerych 
> platformach. Nemusis k programu takisto davat zdrojak, len skript 
> skompilujes na kazdej platforme cez py2exe do bytecodu (.pyc)
> Mne sa v mojej firme (banka) takisto pred nejakym casom podarilo ukazat, 
> ze Python je na urcite veci velmi uzitocny a zaviest ho tu do produkcie :-)
> Pythonovske programy bezia u nas na AS/400 v produkcnom prostredi 
> skompilovane do bytecodu. Bolo to myslene povodne kvoli bezpecnosti, aby 
> pritom nebol zdrojak a dalo sa zistit, kedy bol dany pyc-subor 
> skompilovany atd... Ale nakoniec aj toto vedie len k problemom, lebo pri 
> zmene programu treba vzdy prekompilovat aj bytekod. Podobne je to i so 
> zmenou verziu Pythonu, lebo inak mozes dostat chybu "RuntimeError: Bad 
> magic number in .pyc file"
> Najlepsie je pouzivat rovno zdrojaky a zabezpecit system tak, aby k 
> zdrojakom nemali pristup nekompetetne osoby.
> 
> Roman
> 
> 
> 
> *superman <feed na centrum.cz>*
> Sent by: python-bounces na py.cz
> 
> 19.09.2006 08:00
> Please respond to
> Konference PyCZ <python na py.cz>
> 
> 
> 	
> To
> 	Konference PyCZ <python na py.cz>
> cc
> 	
> Subject
> 	Re: [python] py2exe problém
> 
> 
> 	
> 
> 
> 
> 
> 
> Pokud Vás to ještě zajímá, nakonec jsem program s py2exe rozchodil a
> přeložil, ale musel jsem vyhodit modul logger a napsat si jednoduché
> logování vlastními silami. Modul logger měl totiž v handlerech odkazy na
> import řady různých věcí, které se sice normálně vůbec neuplatnily, ale
> při přeložení do exe se všechny hledaly. A řadu z nich jsem neměl ani
> nainstalovanou.
> 
> Pochopil jsem dvě věci, že python je prostě interpretr a překlad do exe
> je z nouze ctnost kde mnoho modulů začne být problematických. A také to,
> že py2exe prostě jen hloupě prochází příkazy import a co tam najde to se
> snaží připojit a pak na tom trvá uvnitř exe. Jenže dost často to
> nedokáže moc dobře a pak jsou problémy.
> 
> Trochu mě to zklamalo, protože ne vždy člověk chce distribuovat zdrojové
> kódy a ne vše chce dávat jako open source. A hlavně potřebujete něco co
> je nezávislé na tom, jestli je, nebo není naintalován interpretr pythonu.
> 
> Jak tyto problémy vlastně řešíte vy? Jak vyrábíte verze, které
> nepotřebují nainstalovaný python? Já bych hrozně rád vyvíjel v pythonu a
> nahradil tak částečně vývoj v C++, prostě python se mi zdá velmi dobrý.
> Děkuji za podněty, rád bych python používal v maximální míře, ale tyhle
> věci mi dost brání.
> _______________________________________________
> Python mailing list
> Python na py.cz
> http://www.py.cz/mailman/listinfo/python
> 
> 
> Mgr. Ing. Roman MIKLÓŠ
> Prvá stavebná sporiteľňa a.s.
> Bajkalská 30, P. O. Box 48
> 829 48  Bratislava 25
> Tel.: +421/ 2 / 582 31 174
> Fax: +421/ 2 / 582 31 109
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> Python mailing list
> Python na py.cz
> http://www.py.cz/mailman/listinfo/python


Další informace o konferenci Python