Delší dobu používám programovací jazyk Python pro napsání menších pomocných prográmků, jakkoliv vím, že v Pythonu se dají napsat i poměrně rozsáhlé aplikace. Dosud se však jednalo jen o prográmky, které jsem využíval já a já mám Python nainstalovaný na svém počítači. Kolega však potřeboval jeden prográmek pro sebe a tak jsem se „musel“ naučit udělat progránky spustitelné na platformě MS Windows, ideálně spustitelné jen z flashky.
Prostředníkem mezi zdrojovými kódy v Pythonu a spustitelným exe se stal py2exe. Určitě existují i další možnosti, ale na py2exe bylo dostatek podkladů a popsaných úspěšných použití. Být to jen na mě, preferoval bych Portable Python, ale to by znamenalo muset občas kopírovat několik set souborů o velikosti desítek MB, což není vždy zcela žádoucí praktika, nebo plnou instalaci Pythonu s přidáním balíku knihoven. Plnou instalaci Pythonu bychom museli prosaditu firem, jímž zpracováváme mzdy, protože naše mzdové účetní jsou na jejich síti a stav jejich počítačů spadá pod patřičná IT oddělaní velkých firem.
Py2exe nabídl snadnou manipulaci a programy není potřeba instalovat. Od Windows XP se vlastně nemusím starat ani o distribuci MSVCR90.dll, alespoň zatím jsem se s touto nutností nesetkal. Možná bude situace malinko jiná, až bude potřeba spustit program i na historických Windows 2000. Proti Py2exe mám vlastně jen jedinou námitku, když používám Tkinter, obsahuje distribuční adresář mnoho malých souborů, v nichž je schována lokalizace.
Naznačil jsem, že pro tvorbu GUI používám TKinter, který je dostatečný a vypadá naprosto nativně napříč různými správdi oken, ať se jedna o MS Windows, Mac OSX, GNOME, nebo KDE. V Tkinteru je třeba problém s využitím checkboxů, radiobutonnů, rozbalovacích nabídek, … Ne že by je Tkinter neuměl, ale jejich zpřístupnění by bylo poměrně náročné na práci; viz. například combobox na stránkách Programujte.com. Existují nadstavby nad Tkinter, které tyto problémy řeší, z nichž jsem se setkal s pmw a tix, oba podivně udržované, z nichž jsem si vybral první variantu pmw.
Vytvoření spustitelného programu z programu, který používá pmw, není tak triviální, jak by se mohlo zdát. Je potřeba použít malý „cimrmanovský“ úkrok stranou (přičemž cestu k Pythonu zapíšu jako [PYTHON], v mém případě to je C:\Python26\):
cd [PYTHON]\lib\site-packages\Pmw\Pmw_1_2\bin
.- spusťte
python bundlepmw.py [PYTHON]\lib\site-packages\Pmw\Pmw_1_2\lib
. - překopírujte
Pmw.py
do adresáře vašeho projektu - nakonec překopírujte
..\lib\PmwBlt.py
a..\lib\PmwColor.py
do adresáře vašeho projektu.
A to je vše přátelé, pak již jde Pythonovský program „zkompilovat s pmw.
Bohužel další zábava pokračovala s knihovnou xlrd/xlwt, kterou používám pro čtení souborů z tabulkového procesoru Excel, případně další Excelovský sešit mohu vytvořit (úpravy již existujícího sešitu jsou bohužel nemožné). Použití knihoven je velmi triviální a fungují velmi rychle, já jsem byl velmi překvapen, protože v projektech tvořených ve VisualStudio.NET používám Interop komponenty, jež jsou zavislé na konkrétní nainstalované verzi MS Office, s nimiž je načtení dat z Excelovského souboru velmi pomalé. Knihovna xlrd/xlwt mě při kompilaci také trochu potrápila, ale jen díky tomu, že jsem ji nainstaloval z exe souboru, byly špatně cesty a po instalaci ze zdrojových kódů (přes přiložený setup.py) vše funguje jak by fungovat mělo.
Komentáře
Jeden komentář: „Py2exe, pmw a xlrd/xlwt“
[…] článek: MaReK Penguin_007 Olšavský » Počítače // Py2exe, pmw a xlrd/xlwt […]