Ausführen eines Python-Skripts vom Terminal aus ohne die Erweiterung .py

14

Ich möchte ein Python - Skript aufrufen script.py , indem man einfach aus dem Terminal - Skript . Ist das möglich? Wenn das so ist, wie?

Ich weiß, dass ich es vermeiden kann, python script.py einzugeben, indem ich #! / Usr / bin / env python oben im Skript hinzufüge, aber ich muss immer noch das Suffix .py hinzufügen , um das Skript auszuführen.

jmau5
quelle

Antworten:

21

Unix / Linux-Dateisysteme sind nicht wie Windows auf Erweiterungen angewiesen. Sie sollten nicht .pydas Ende einer Datei benötigen , um sie auszuführen.

Sie können die Datei ausführen, indem Sie sie entweder mit dem Interpreter aufrufen:

python ScriptFile

Oder indem Sie es als ausführbar markieren und den Interpreter in der ersten Zeile definieren (z #!/usr/bin/python. B. ).

Wenn Sie die Datei nicht ausführen können mit:

/Path/to/ScriptFile

Überprüfen Sie die Berechtigungen mit

ls -l ScriptFile

Möglicherweise müssen Sie das ausführbare Flag hinzufügen chmod, damit es für Sie ausgeführt wird.

Wenn Sie regelmäßig benutzerdefinierte Skripts verwenden, möchten Sie möglicherweise sicherstellen, dass das von Ihnen gespeicherte Verzeichnis der PATHUmgebungsvariablen hinzugefügt wird.

Patrick
quelle
1
Die Datei befindet sich in ~ / workspace / python. Ich habe meinem Pfad ~ / workspace / python hinzugefügt, sudo chmod a + x script.py "ausgeführt und die shebang-Zeile (#! / Usr / bin / env python) oben im Skript hinzugefügt . ich kann das Skript durch Eingabe * script.py laufen , aber nur die Eingabe - Skript funktioniert nicht.
jmau5
2
In Unix / Linux ist alles eine Datei und antwortet auf ihren Dateinamen. Sie können Script.py nicht als Skript aufrufen. Versuchen Sie, die Datei von script.py in script umzubenennen, und es sollte Ihr Problem beheben.
Patrick
Entschuldigung, ich habe es falsch verstanden! Alles gelöst, danke!
jmau5
5

Die .pyErweiterung ist zum Ausführen des Skripts nicht erforderlich. Sie müssen nur das Skript ausführbar machen (z. B. durch Ausführen chmod a+x script) und die shebang-Zeile ( #!/usr/bin/env python) hinzufügen .

Daniel Kullmann
quelle
Siehe meinen Kommentar zu Patricks Antwort.
jmau5
4

Optional können Sie einen Wrapper für Ihr Skript (eine .pyDatei) erstellen :

Sie haben beispielsweise ein Skript runme.py, mit dem Sie eine neue Datei runmezum Umbrechen des Skripts erstellen können :

#!/usr/bin/env python
import runme

und rufen Sie dann die runme.pyFunktionalität nur durch Aufrufen runmein der Shell auf.

Das ist für Multi - Plattform - Skripte, Ursache auf Windows - Plattform nützlich ist , können Sie zuweisen .pyDateien nur ohne Erweiterung und namentlich aufgerufen werden shebang im Header, aber auf der Linux - Plattform können Sie nicht und somit die Hülle herauskommt.

Turm
quelle