Ich sehe dies am Anfang der Python-Dateien:
-
Für Python 2-Dateien
#!/usr/bin/env python
-
Für Python 3-Dateien
#!/usr/bin/env python3
Ich habe den Eindruck, dass die Dateien auch ohne diese Zeile funktionieren.
Ich sehe dies am Anfang der Python-Dateien:
Für Python 2-Dateien
#!/usr/bin/env python
Für Python 3-Dateien
#!/usr/bin/env python3
Ich habe den Eindruck, dass die Dateien auch ohne diese Zeile funktionieren.
Vielleicht ist Ihre Frage in diesem Sinne zu verstehen:
Wenn Sie verwenden möchten: $python myscript.py
Sie brauchen diese Zeile überhaupt nicht. Das System ruft python auf und der python-Interpreter führt Ihr Skript aus.
Aber wenn Sie beabsichtigen, zu verwenden: $./myscript.py
Wenn man es direkt wie ein normales Programm oder Bash-Skript aufruft, muss man diese Zeile schreiben, um dem System mitzuteilen, mit welchem Programm es ausgeführt werden soll (und es auch mit chmod 755
)
Der Hauptgrund dafür ist, dass das Skript über Betriebssystemumgebungen hinweg portabel sein soll.
Zum Beispiel verwenden Python-Skripte unter mingw :
#!/c/python3k/python
und unter der GNU/Linux-Distribution ist es entweder:
#!/usr/local/bin/python
oder
#!/usr/bin/python
und unter dem besten kommerziellen Unix sw/hw System von allen (OS/X) ist es das:
#!/Applications/MacPython 2.5/python
oder unter FreeBSD:
#!/usr/local/bin/python
All diese Unterschiede können das Skript jedoch durch die Verwendung portabel machen:
#!/usr/bin/env python
Technisch gesehen ist dies in Python nur eine Kommentarzeile.
Diese Zeile wird nur verwendet, wenn Sie das py-Skript ausführen aus der Schale (über die Befehlszeile). Dies ist bekannt als die " Shebang !" und wird in verschiedenen Situationen verwendet, nicht nur bei Python-Skripten.
Hier weist sie die Shell an, eine bestimmte Version von Python (um sich um den Rest der Datei zu kümmern.
Es ist wahrscheinlich sinnvoll, eine Sache hervorzuheben, die die meisten übersehen haben und die ein sofortiges Verständnis verhindern könnte. Wenn Sie tippen python
im Terminal geben Sie normalerweise keinen vollständigen Pfad an. Stattdessen wird die ausführbare Datei in PATH
Umgebungsvariable. Wenn Sie wiederum ein Python-Programm direkt ausführen wollen, /path/to/app.py
muss man der Shell mitteilen, welchen Interpreter sie verwenden soll (über die Option hashbang was die anderen Teilnehmer oben erläutern).
Hashbang erwartet vollständigen Pfad an einen Dolmetscher. Um Ihr Python-Programm direkt auszuführen, müssen Sie also den vollständigen Pfad zum Python-Binary angeben, der erheblich variiert, vor allem, wenn man die Verwendung von virtualenv . Um die Übertragbarkeit zu gewährleisten, ist der Trick mit /usr/bin/env
verwendet wird. Letztere ist ursprünglich dazu gedacht, die Umgebung an Ort und Stelle zu verändern und einen Befehl darin auszuführen. Wenn keine Änderung angegeben wird, wird der Befehl in der aktuellen Umgebung ausgeführt, was effektiv zu demselben Ergebnis führt PATH
Nachschlagen, das den Zweck erfüllt.
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.