Py2exe, pmw a xlrd/xlwt

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.

Reklama

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\):

  1. cd [PYTHON]\lib\site-packages\Pmw\Pmw_1_2\bin.
  2. spusťte python bundlepmw.py [PYTHON]\lib\site-packages\Pmw\Pmw_1_2\lib.
  3. překopírujte Pmw.py do adresáře vašeho projektu
  4. 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“

  1. […] článek: MaReK Penguin_007 Olšavský » Počítače // Py2exe, pmw a xlrd/xlwt […]