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 .

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.


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] 

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.


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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.