Mittwoch, 17. August 2011

Ein Python-Starter für Windows

Mark Hammond (Autor von pywin32 und seit langem Unterstützer von Python unter Windows) hat PEP 397 geschrieben, das einen neuen Starter für Python unter Windows beschreibt. Vinay Sanjip (Autor des logging-Moduls der Standardbibliothek) hat kürzlich eine Implementierung des Starters erstellt: Sie ist unter https://bitbucket.org/vinay.sajip/pylauncher/downloads verfügbar.

Der Starter erlaubt Python-Skripten (.py- und .pyw-Dateien) unter Windows die Version von Python festzulegen, die benutzt werden soll, und erlaubt damit die simultane Benutzung von Python 2 und 3.

Windows-Benutzer sollten sich überlegen, den Starter herunterzuladen und zu testen, um den Python-Entwicklern zu helfen eventuell verbleibende Probleme auszubügeln. Der Starter ist als eigenständige Anwendung paketiert und wird die momentan verfügbaren Python-Versionen unterstützen. Es ist geplant den Starter, sobald er fertiggestellt ist, als Teil von Python 3.3 auszuliefern (er wird aber noch als eigenständiges Programm für Nutzer früherer Versionen verfügbar bleiben).

Zwei Versionen des Starters sind verfügbar: launcher.msi, das in das Programme-Verzeichnis installiert; und launchsys.msi, das in Windows' System32-Verzeichnis installiert. (Es gibt auch 64-Bit-Versionen für 64-Bit-Windows-Versionen).

Ein Paar Details zum Starter

Die komplette Spezifikation des Starter-Verhaltens wird in PEP 397 beschrieben. Die wesentlichen Grundlagen sind:

  • Der Starter beinhaltet zwei ausführbare Programme — py.exe (die Konsolen-Version) und pyw.exe (die GUI-Version).
  • Der Starter ist als Handler für .py (Konsole) und .pyw (GUI) Dateiendungen registriert.
  • Beim Ausführen von Skripten sucht der Starter nach einer Unix-mäßigen #! (Shebang) Zeile im Skript. Es erkennt die Namen python (Standard-Python des Systems) python2 (Standard-Python2-Version) und python3 (Standard-Python3-Version). Die genauen Details können einfach pro Nutzer oder pro System angepasst werden.
  • Alleine benutzt, startet py.exe den interaktiven Python-Interpreter. Kommandozeilen-Schalter werden in der Art unterstützt, dass py -2 Python 2, py -3 Python 3 und py die Standard-Version startet.

Hinweise zur Benutzung

Ist er installiert, verknüpft sich der Starter selbstständig mit .py- und .pyw-Skripten. Tut man nichts entsprechendes, werden die Skripte mit dem Standard-Python-Interpreter der Maschine ausgeführt, man merkt also keine Veränderung. Nutzt man die Konsole sehr häufig, will man wahrscheinlich .py in die PATHEXT-Variable aufnehmen, damit Skripte nicht in einer separaten Konsole ausgeführt werden.

Um festzulegen, dass ein Skript Python 2 nutzen muss, fügt man einfach folgendes als erste Zeile zum Skript hinzu:

#!/usr/bin/env python2

Will man dagegen festlegen, dass ein Skript Python 3 nutzen muss, fügt man als erste Zeile:

#!/usr/bin/env python3

hinzu.

Man kann auch den Python-Interpreter mit folgenden Befehlen starten:

# Standard-Python-Version
py
# Python 2
py -2
# Python 3
py -3

Damit das funktioniert, muss sich py.exe im Suchpfad befinden. Dies geschieht automatisch mit der launchsys-Version des Installers. Bei der Benutzung von launcher.msi muss das Installationsverzeichnis (C:\\Programme\Python Launcher) manuell zu PATH hinzugefügt werden.

Literaturhinweise

Die folgenden Email-Threads auf python-dev decken ein paar Schlüsseldiskussionen ab:

Englische Version

Keine Kommentare:

Kommentar posten