1235 Stimmen

Sollte ich #! (shebang) in Python-Skripte einfügen und welche Form sollte es haben?

Sollte ich den Shebang in meine Python-Skripte einfügen? In welcher Form?

#!/usr/bin/env python 

o

#!/usr/local/bin/python

Sind diese auch tragbar? Welche Form wird am häufigsten verwendet?

Note : die Tornado Projekt verwendet den ganzen Kram. Auf der anderen Seite ist das Django Projekt nicht.

3voto

F1Linux Punkte 2376

In Wirklichkeit geht es um die Frage, ob der Pfad zum Python-Interpreter wie folgt lauten sollte absolut o logisch ( /usr/bin/env ) in Bezug auf die Übertragbarkeit.

Nachdem ich das Verhalten gründlich getestet habe, bin ich der Meinung, dass der logische Pfad im "She-Bang" ist die bessere der beiden Optionen .

Als Linux-Ingenieur ist es immer mein Ziel, die am besten geeigneten, optimierten Hosts für meine Entwicklerkunden bereitzustellen, daher ist die Frage der Python-Umgebungen etwas, auf das ich wirklich eine solide Antwort brauche. Nachdem ich auf dieser und anderen Stack Overflow-Seiten auf andere Antworten gestoßen bin, die das Thema allgemein und ohne Belege behandelten, habe ich einige wirklich Granulare Prüfung und Analyse zu genau dieser Frage auf Unix.SE.

2voto

mara004 Punkte 407

Für Dateien, die von der Kommandozeile aus ausgeführt werden sollen, würde ich empfehlen

#! /usr/bin/env python3

Ansonsten brauchen Sie den ganzen Kram nicht (obwohl er natürlich nicht schadet).

1voto

ik_zelf Punkte 5982

Wenn Sie virtuelle Umgebungen wie mit pyenv verwenden, ist es besser zu schreiben #!/usr/bin/env python Die pyenv-Einstellung steuert, welche Python-Version und welcher Dateispeicherort für die Ausführung Ihres Skripts verwendet wird.

Wenn bekannt ist, dass Ihr Code versionsspezifisch ist, hilft es anderen, herauszufinden, warum sich Ihr Skript in ihrer Umgebung nicht verhält, wenn Sie die erwartete Version im Shebang angeben.

1voto

MukeshKumar Punkte 21

Wenn Sie Ihre Datei ausführbar machen wollen, müssen Sie eine shebang-Zeile in Ihre Skripte einfügen.

#!/usr/bin/env python3 

ist die bessere Option in dem Sinne, dass sie nicht von einer bestimmten Linux-Distribution abhängig ist, sondern auf fast allen Linux-Distributionen verwendet werden kann, da sie den Python3-Pfad aus den Umgebungsvariablen sucht, die für verschiedene Linux-Distributionen unterschiedlich sind.

während

#!/usr/local/bin/python3 

wäre ein distro-spezifischer Pfad für python3 und würde nicht funktionieren, wenn python3 nicht in diesem Pfad gefunden wird, und könnte zu Verwirrung und Unklarheit für Entwickler führen, wenn sie von einer Linux-Distribution zu einer anderen migrieren.

0 Stimmen

Welche neuen Informationen enthält diese Antwort?

-3voto

frp farhan Punkte 423

Zuerst verwenden

which python

Dies gibt die Ausgabe als den Ort aus, an dem sich mein Python-Interpreter (binär) befindet.

Diese Ausgabe kann zum Beispiel so aussehen

/usr/bin/python

o

/bin/python

Wählen Sie nun die Shebang-Zeile entsprechend aus und verwenden Sie sie.

Zur Verallgemeinerung können wir verwenden:

#!/usr/bin/env

o

#!/bin/env

3 Stimmen

Dies wird höchstwahrscheinlich nicht auf andere Systeme übertragbar sein. #!/usr/bin/env trifft die richtige Wahl für Sie.

0 Stimmen

Deshalb verwenden Sie die which Befehl - er gibt die korrekte Zeichenfolge für Ihr spezielles System zurück.

1 Stimmen

... und dann jedes Mal, wenn das Skript auf einem anderen Rechner ausgeführt werden soll, führen Sie which python erneut und ändern Sie das Skript, wenn die Ausgabe vom aktuellen Shebang abweicht

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X