In diesem Artikel möchte ich kurz und mit kleinen Beispielen zeigen, wie man unter Linux, bei mir Ubuntu 7.04, Python-Programme mit PyInstaller zu ausführbaren Windows-Programmen kompiliert.
Benötigte Programme
Wine
Habe ich per apt-get in Version 0.9.33 installiert. Wie man es installiert, steht auf http://www.winehq.com.
Python
Bei Python habe ich den aktuellen (2.5) Windows Installer von http://www.python.org im MSI-Format heruntergeladen.
Python installieren wir nun unter Wine. Das hat natürlich keine Auswirkungen auf die Python-Installation von Linux.
cd /in/das/Verzeichnis/wo/pythoninstaller/exe/liegt wine msiexec /i python-2.5.1.msi
Nun einfach dem Installationsassistenten folgen.
PyInstaller
Bei PyInstaller habe ich von http://pyinstaller.python-hosting.com die aktuelle Version 1.3 heruntergeladen.
PyInstaller wird in Wines Python-Verzeichnis entpackt, bei mir war es der Name pyinstaller-1.3. Das Verzeichnis ist normalerweise /home/username/.wine/drive_c/Python25/.
Um PyInstaller zu konfigurieren, den folgenden Befehl aus dem PyInstaller Verzeichnis ausführen -- die configure.py muss per wine über die python.exe ausgeführt werden, sonst wird PyInstaller für das unter Linux installierte Python konfiguriert.
wine ../python.exe configure.py
Das erste Programm
myscript.py:
import time import Tkinter as tk root = tk.Tk() lab = tk.Label(root, text="Tkinter Minimal-Test %s"%(time.time())) lab.pack() root.mainloop()
Damit das folgende Beispiel funktioniert, muss myscript.py in den pyinstaller-Ordner gelegt werden, und auch die Befehlseingabe muss aus dem Ordner erfolgen. Ich habe ein Beispiel mit Tkinter gewählt, um zu zeigen, dass auch GUI-Programme funktionieren.
Der folgende Befehl erzeugt die spec-Datei:
wine ../python.exe Makespec.py --onefile myscript.py
Mit der nun vorhandenen spec-Datei können wir unser Programm kompilieren:
wine ../python.exe Build.py myscript/myscript.spec
Im Ordner myscript/ sind nun diverse Ordner und Dateien; gebraucht wird aber nur die exe-Datei, da beim Erzeugen der spec-Datei die Option --onefile mitgegeben wurde.
Es lohnt sich auf jeden Fall ein Blick in das Handbuch von PyInstaller, um noch andere Optionen und Einstellungen kennen zu lernen.