Führen Sie Python-Skripte aus, ohne `python` explizit aufzurufen

39

Ich benutze Debian Linux.

Ich habe mich gefragt, ob es eine Möglichkeit gibt, die Ausführung aller Python-Skripte im Terminal durch Eingabe script.py(anstelle von python script.py) zu konfigurieren .

user2018084
quelle

Antworten:

58

Sie müssen zwei Dinge tun:

  • Stellen Sie sicher, dass die Datei ausführbar ist: chmod +x script.py
  • Verwenden Sie einen Shebang, um dem Kernel mitzuteilen, welchen Interpreter er verwenden soll. Die oberste Zeile des Skripts sollte lauten:

    #!/usr/bin/python
    

    Dies setzt voraus, dass Ihr Skript mit dem Standardpython ausgeführt wird. Wenn Sie eine bestimmte Version benötigen, geben Sie einfach im shebang an:

    #!/usr/bin/python2.7
    

Jetzt können Sie Folgendes eingeben:

    ./script.py

Wenn sich das Skript in Ihrem aktuellen Verzeichnis befindet, oder:

    script.py

wenn sich der Speicherort des Skripts zufällig in Ihrem PATH befindet, oder:

    path/to/script.py

Andernfalls.

Paul
quelle
32
Im Allgemeinen ist es eine bessere Idee #!/usr/bin/env python, wenn der Benutzer eine lokale Python-Version (z. B. in /usr/local/bin) hat, mit der er das Skript lieber ausführen möchte.
Sapi
3
@sapi Laut Debian ist dies nicht der Fall, zumindest nicht in ihren Entwicklungsrichtlinien. Wenn Sie Ihre eigenen Skripte schreiben, können Sie das Risiko natürlich akzeptieren, es ist nur besser, explizit zu sein. Wenn Sie das lokale wollen, wählen Sie es im shebang.
Paul
3
Es ist nicht so, bashdass die Datei bei der Ausführung liest ...
unperson325680
@progo Dies gilt - beachten Sie, dass , wenn Sie eine Antwort sehen , dass Sie von der Verbesserung profitieren würde denken, gehen Sie vor und bearbeiten es sind Verbesserungen immer willkommen
Paul
Und du musst es tun ./script.py, nichtscript.py
Paul Draper
33

Unter Linux können Sie einfach den Hashbang (aka shebang) verwenden. Fügen Sie die Zeile hinzu

#!/usr/bin/python

Wenn Sie den Standard-Python-Interpreter ausführen möchten.

#!/path/to/python[x.x]

um eine bestimmte Version zu verwenden, oder

#!/usr/bin/env python

Wenn Sie möchten, dass die Umgebung Python für Sie findet.

Sie müssen das Skript auch ausführbar machen

chmod +x script[.py] 
Gaurav Joseph
quelle
2

Verwenden:

#!/usr/bin/env python

Dadurch wird sichergestellt, dass der Python, den der Benutzer erwartet, derjenige ist, der das Skript ausführt. Dies ist besonders wichtig, wenn der Benutzer virtualenv verwendet, um eine bestimmte Version von Python in einer bestimmten Umgebung zu verwenden.

Cory Klein
quelle
0

Verwenden Sie eine Shebang-Zeile oben in Ihrem Skript wie folgt:

! / usr / bin / python

Aktualisieren Sie die entsprechende Python-Version, auf der Sie das Skript ausführen möchten. zB Für Python 3.6 ist es

! /usr/bin/python3.6

für Standardinterpreter

! / usr / bin / python

Hinweis: Stellen Sie sicher, dass das Skript über ausführbare Berechtigungen verfügt.

Suraj Bora
quelle