Cross-Plattform-Weg Python-Interpreter zu spezifizieren, wenn mit execv läuft

StackOverflow https://stackoverflow.com/questions/3988598

  •  10-10-2019
  •  | 
  •  

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

War es hilfreich?

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“).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top