Bedeutung des Kommentars in der ersten Programmzeile

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Lukas_25025
User
Beiträge: 13
Registriert: Sonntag 16. Mai 2021, 10:20

Hey Leute,
Ich lerne gerade Python und habe in vielen Programmen diesen Code in der ersten Zeile gesehen:

Code: Alles auswählen

#!/usr/bin/env python3
Kann mir jemand erklären, wofür der gut ist, und wann man ihn in welcher Form schreibt?
LG
dirk009
User
Beiträge: 27
Registriert: Donnerstag 3. Juni 2021, 21:49

Hallo @Lukas_25025,

das ist ein sogenannter shebank (siehe https://de.wikipedia.org/wiki/Shebang).
Es gibt einen Hinweis, welcher Interpreter verwendet werden soll (unter unixartigen Betriebssystemen).


Cheers,
Dirk
Benutzeravatar
smutbert
User
Beiträge: 31
Registriert: Samstag 5. Juli 2014, 17:22
Wohnort: Graz

Noch einmal dasselbe von mir ergänzt um eine Kleinigkeit – ich hatte das schon geschrieben bevor ich dirk009s Antwort gesehen habe:

Das ist der oder die (?) vor allem von unixartigen Betriebssystemen und da besonders bei den diversen Shells wie z. B. der bash bekannte Shebang in dem festgelegt wird von welchem Programm die Datei interpretiert werden soll, damit man sie etwa von einer Shell aus aufrufen kann.

Dabei ist es notwendig (und üblich) den kompletten Pfad des Programms anzugeben. Der Pfad zu python3 ist aber nicht auf allen Systemen derselbe, weshalb es besser ist nicht einfach das häufig zutreffende

Code: Alles auswählen

#!/usr/bin/python3
sondern für python3

Code: Alles auswählen

#!/usr/bin/env python3
zu schreiben, das immer funktioniert solange python3 im Suchpfad ist.
Benutzeravatar
__blackjack__
User
Beiträge: 14065
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Kleine Korrektur: Es ist das Betriebssystem, das die Zeile auswertet, nicht die Shell.

Ergänzung: Unter Windows ist das für Python relevant, weil dort *.py-Dateien mit `py.exe` verknüpft werden, und *das* Programm wertet die Zeile auch aus um letztlich den tatsächlichen Interpreter zu wählen. So kann man auch unter Windows verschiedene Python-Versionen konfigurieren. Näheres steht in der Python-Dokumentation.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Lukas_25025
User
Beiträge: 13
Registriert: Sonntag 16. Mai 2021, 10:20

@__blackjack__ , @smutbert , @dirk009
Danke für die Antworten, kann ich das dann einfach bei jedem Python Programm in die erste Zeile schreiben oder wird das nur in bestimmten Fällen benötigt?
Wenn ja in welchen?
Benutzeravatar
hyle
User
Beiträge: 96
Registriert: Sonntag 22. Dezember 2019, 23:19
Wohnort: Leipzig

Das kannst Du immer reinschreiben. Verwendet wird das jedoch nur, wenn das Skript ausführbar ist und der Interpreter beim Aufruf des Skripts nicht vorangestellt wurde.

D.h. wenn das Skript ausführbar ist und per /Pfad/zum/Skript.py aufgerufen wird, dann liest das System den Shebang und verwendet diesen zum starten des Interpreters.
Wird aber der Interpreter beim Aufruf vorangestellt python3 /Pfad/zum/Skript.py, dann ist die erste Zeile nur ein Kommentar und wird nicht weiter beachtet.


//Edit
Kann man auch testen, z.B. damit:

Code: Alles auswählen

#!/usr/bin/env python3

import sys

print("Python{}.{}.{}".format(sys.version_info.major, sys.version_info.minor, sys.version_info.micro))
Alles was wir sind ist Sand im Wind Hoschi.
Antworten