Cross-Plattform-Weg Python-Interpreter zu spezifizieren, wenn mit execv läuft
Frage
Ich bin derzeit sowohl einen Python-Skripte auf Linux und Windows ausgeführt werden 7. Die Datei in einem execv Stil ausgeführt wird, mit dem ich meine, dass der Dolmetscher am Anfang der Datei in einem Befehl definiert ist.
In Windows-System, die Interpreter-Spezifikation ist:
#!C:\Python26\python.exe
Doch in Linux Dies muss sein
#!/usr/bin/python
Ich möchte dieses Skript in beiden Systemen laufen zu lassen, ohne dass diese Linie wieder ändern und wieder.
Ich habe folgendes ausprobiert:
#!C:\Python26\python.exe
#!/usr/bin/python
als auch
#!C:\Python26\python.exe;/usr/bin/python
Also: ist es eine Möglichkeit, mehrere Dolmetscher angeben könnte
Lösung
#!/usr/bin/env python
Das wird das env
Programm rufen Sie Ihre PATH für ein Python-Executable zu suchen.
Wenn Sie eine bestimmte Version von Python, um sicherzustellen, Sie tun können, z.
#!/usr/bin/env python2.5
Andere Tipps
Je nachdem, was Sie versuchen, dies zu tun, ist vielleicht ein bisschen schwergewichtigen, aber 0install kann Ihr Programm die entsprechende Python-Interpreter für Ihre Plattform laufen. In der XML-Beschreibung des Programms, so etwas tun (zum Beispiel, wenn Sie Python> = 2,6, wollen <3):
<command name="run" path="myprog.py">
<runner interface="http://repo.roscidus.com/python/python">
<version not-before="2.6" before="3"/>
</runner>
</command>
Siehe auch: http://www.0install.net/local-feeds.html
Dies wird auch eine passende Version von Python herunterladen machen 0install, wenn der Benutzer es nicht bereits hat.
Beachten Sie, dass Sie dies auch tun sollten, wenn Sie nur Linux Targeting, denn mit Python 3 kein einziges # ist! Linie, dass die Arbeiten auf allen Plattformen (einige Plattformen, zum Beispiel Bogen, erfordern „python2“ nicht „Python“, während andere, zum Beispiel Debian, bieten keine „python2“ nur „Python“).