22.2 Erstellen von EXE-Dateien – py2exe 

Das Thema dieses Kapitels ist eine Erweiterung des Pakets distutils namens py2exe. Durch das Modul py2exe (sprich: py to exe) wird es möglich, ein Python-Programm zusammen mit dem Python-Interpreter zu einer einzelnen ausführbaren Datei (Windows-EXE) zu schnüren, sodass das fertige Programm auch in Umgebungen ausgeführt werden kann, in denen keine Python-Installation vorhanden ist. Beachten Sie, dass py2exe kein Installer ist, sondern dass das Programm über die resultierende EXE direkt ausführbar ist. Beachten Sie außerdem, dass py2exe eine EXE erzeugt, die sich ausschließlich unter Windows ausführen lässt und dass das Erstellen einer ausführbaren Datei mit py2exe ebenfalls unter Windows geschehen muss.
Das Modul py2exe ist nicht im Lieferumfang von Python enthalten. Sie müssen es von der Website des Open-Source-Projekts unter http://www.py2exe.org herunterladen.
In diesem Kapitel soll ein kleines Beispielprogramm geschrieben werden, das dann mittels py2exe in eine für sich stehende ausführbare Datei verwandelt werden soll. Hier sehen Sie zunächst den Quelltext des Beispielprogramms:
import random import sys
def verwirble_text(text): liste = [] for wort in text.split(): w = list(wort[1:-1]) random.shuffle(w) w = "".join(w) liste.append("".join([wort[0], w, wort[-1]])) return " ".join(liste)
if __name__ == "__main__": text = u""" Hallo Python erm\u00F6glicht einen glatten \u00DCbergang von kleinen, einfachen Scripten zu sehr komplexen Anwendungen. Dieses Buch vermittelt umfassende Python-Kenntnisse """ print verwirble_text(text)
Es handelt sich dabei um die Funktion verwirble_text des vorherigen Beispielprogramms, die dahingehend erweitert wurde, dass sie automatisch einen »verwirbelten« Beispieltext ausgibt, wenn das Programm ausgeführt wird.
Da py2exe eine Erweiterung des Pakets distutils ist, müssen wir auch in diesem Fall die Programmdatei setup.py implementieren. Bezogen auf unser obiges Beispielprogramm sieht sie folgendermaßen aus:
from py2exe.build_exe import py2exe from distutils.core import setup
setup( [.] console=["programm.py"] )
Statt der Auslassungszeichen stehen die üblichen Parameter der Funktion setup im Quellcode, über die beispielsweise der Name oder die E-Mail-Adresse des Autors angegeben werden kann. Um das Installationsscript für py2exe nutzbar zu machen, muss durch den Schlüsselwortparameter console eine Liste mit mindestens einem Eintrag übergeben werden. Jeder Eintrag steht dabei für den Namen einer Programmdatei, die später zu einem eigenständigen ausführbaren Programm werden soll. In unserem Fall soll dies nur für die Programmdatei programm.py durchgeführt werden.
Beachten Sie, dass alle Programmdateien, die für den Schlüsselwortparameter console übergeben werden, später als reine Konsolenanwendung enden. Alternativ kann der Parameter windows für eine Anwendung mit grafischer Benutzeroberfläche verwendet werden.
Nachdem das Installationsscript fertig ist, kann die ausführbare Datei erzeugt werden. Dazu muss das Installationsscript setup.py mit dem Argument py2exe aufgerufen werden:
setup.py py2exe
Der Rest geschieht automatisch. Nachdem sich das Installationsscript beendet hat, finden Sie im Programmverzeichnis zwei Unterordner namens build und dist. Der erste Ordner enthält temporäre Dateien von py2exe und kann problemlos gelöscht werden. Im Ordner dist ist die fertige Distribution Ihres Python-Programms enthalten. Das beinhaltet nicht nur die ausführbare Datei, in unserem Fall programm.exe, sondern noch weitere ausführbare und nicht-ausführbare Dateien, die für das endgültige Programm wichtig sind. So sind beispielsweise der Python-Interpreter in der DLL Python25.dll und die benötigten Teile der Standardbibliothek im Archiv library.zip ausgelagert.
| Hinweis |
| Im Verzeichnis dist finden Sie neben den angesprochenen Dateien vor allem auch die DLL MSVCR71.dll. Diese Datei stammt von Microsoft und sollte Ihrem Programm daher nur beiliegen, wenn Sie die Erlaubnis dazu haben. |
Neben MSVCR71.dll werden noch weitere DLLs benötigt, damit Ihr Programm ausgeführt werden kann. Welche das sind, teilt Ihnen das Installationsscript mit, kurz bevor es sich beendet:
*** binary dependencies *** Your executable(s) also depend on these dlls which are not included, you may or may not need to distribute them. Make sure you have the license if you distribute any of them, and make sure you don't distribute files belonging to the operating system. ADVAPI32.dll - C:\WINDOWS\system32\ADVAPI32.dll USER32.dll - C:\WINDOWS\system32\USER32.dll SHELL32.dll - C:\WINDOWS\system32\SHELL32.dll KERNEL32.dll - C:\WINDOWS\system32\KERNEL32.dll
Beachten Sie, dass die hier aufgelisteten DLLs im Gegensatz zu MSVCR71.dll auf jeder Windows-Installation verfügbar sein sollten.
| Hinweis |
| Das Modul py2exe arbeitet problemlos mit einem Großteil der Standardbibliothek von Python zusammen. Auch viele Bibliotheken von Drittanbietern funktionieren einwandfrei. Trotzdem sind in einigen Fällen einige Tricks vonnöten, um ein bestimmtes Modul oder Paket mit py2exe lauffähig zu machen. Für solche Fälle listet die Website http://www.py2exe.org unter dem Stichwort »Working with various packages and modules« Tipps für bestimmte Pakete und Module auf. |




bestellen





