Sollten Python-Bibliotheksmodule mit #! / usr / bin / env python beginnen?

8

Sollen Python-Bibliotheksmodule mit #!/usr/bin/env python beginnen?

Wenn man sich die ersten Zeilen von *.py in /usr/share/pyshared anschaut (wo Python-Bibliotheken in Debian gespeichert sind), zeigt sich, dass es sowohl Dateien gibt, die mit der Hashbang-Zeile beginnen als auch solche, die das nicht tun.

Gibt es einen Grund, diese Zeile einzuschließen oder wegzulassen?

    
Mischa Arefiev 20.03.2012, 08:27
quelle

3 Antworten

6

Der Grund, warum einige Dateien in /usr/share/pyshared den Shebang & amp; einige sind nicht leicht zu erklären. Nimm die Dateien uno.py und pyinotify.py . Ersteres hat keinen Shebang und letzteres hat.

  1. uno.py ist ein Python-Modul, das importiert und in anderen Programmen / Skripten verwendet wird. Daher wird es nie direkt von der Kommandozeile ausgeführt werden.
  2. Andererseits enthält pyinotify.py den Shebang und Sie können sehen, dass er die folgende Zeile am unteren Rand enthält (er kann in eine ausführbare Datei umgewandelt werden, wenn Sie chmod u+x darauf ausführen):

    %Vor%

Sie können die Python-Binärdatei fest im shebang codieren, aber wie andere bereits erwähnt haben, macht die Verwendung von /usr/bin/env sie portabler.

    
canadadry 20.03.2012, 08:59
quelle
5

Diese Linie ist eine Shebang-Linie. Details finden Sie im Wikipedia-Artikel . Im Grunde gibt es den Interpreter an, mit dem die Datei ausgeführt werden kann, wenn sie direkt von der Befehlszeile aus ausgeführt wird.

Sie müssen diese Zeile nicht an den Anfang einer Datei setzen, es sei denn, Sie planen, sie direkt aus der Shell heraus auszuführen. Einige Python-Module (z. B. ftplib) verfügen über einige Funktionen, wenn Sie sie direkt ausführen. Diese haben die #! -Zeile oben. Die meisten haben keine solche Funktionalität und benötigen daher diese Zeile nicht.

    
Noufal Ibrahim 20.03.2012 08:34
quelle
0

Wenn Sie möchten, dass Ihr Skript eine ausführbare Datei ist, müssen Sie diese Zeile einfügen

    
user1280158 20.03.2012 08:29
quelle

Tags und Links