2009-07-22 1 views
12

Ich schreibe eine ziemlich grundlegende Anwendung in Python (es ist nur eine Datei im Moment). Meine Frage ist, wie bekomme ich es, damit das Python-Skript in/usr/bin ohne die Erweiterung .py ausgeführt werden kann?Python-Skripte in/usr/bin

Zum Beispiel, statt dem laufenden

python htswap.py args 

aus dem Verzeichnis, in dem es zur Zeit ist, mag ich in einem beliebigen Verzeichnis auf CD zu können und tun

htswap args 

Vielen Dank im Voraus!

Antwort

31

Entfernen Sie einfach die .py Erweiterung durch Umbenennen der Datei. Dann müssen Sie die folgende Zeile an der Spitze der Datei setzen:

#!/usr/bin/env python 

env ist ein kleines Programm, das die Umwelt einrichtet, so dass der rechte python Interpreter ausgeführt wird.

Sie müssen auch Ihre ausführbare Datei mit dem Befehl

chmod a+x htswap 

und Dump es in /usr/local/bin machen. Dies ist sauberer als /usr/bin, weil der Inhalt dieses Verzeichnisses normalerweise vom Betriebssystem verwaltet wird.

+0

nach vielen Schmerzen und Nahtoderfahrungen, empfehle ich, die spezifische Python-Version zu verwenden, die Sie für #!/usr/bin/env python . (zB python2.4) statt. Besser die Kontrolle über die Python-Version zu haben läuft die ausführbare Datei (zumindest für die Fälle, die ich erlebt habe, YMMV) –

13

sollte die erste Zeile der Datei

sein
#!/usr/bin/env python 

Sie die .py Erweiterung entfernen sollte, und die Datei ausführbar machen,

chmod ugo+x htswap 

EDIT:Thomas Punkte heraus richtig, dass solche Skripte sollten in /usr/local/bin anstatt in /usr/bin platziert werden. Bitte upvote seine Antwort (auf Kosten von mir, vielleicht. Sieben upvotes (wie wir sprechen) für diese Art von Sachen ist lächerlich)

+0

Ja, das war es, ich tat dies früher und aus irgendeinem Grund hat es nicht funktioniert, stellt sich heraus, dass ich vergessen habe! in der Shebang –

2

Shebang?

#!/usr/bin/env python 

am Anfang der Datei Legen Sie das und Sie

+2

Oh Baby, wenn sie sich bewegt ... – Alex

1

hinzufügen #!/usr/bin/env python an die Spitze der htswap.py und benennen htswap.py-htswap dann einen Befehl tun gesetzt: chmod +x htswap htswap ausführbar zu machen.

-1

ich in den offiziellen Python-Tutorials zu sehen, http://docs.python.org/tutorial/index.html, dass

#! /usr/bin/env python 

verwendet wird, ebenso wie die Antworten oben vorschlagen. Beachten Sie, dass Sie auch Folgendes verwenden können:

#!/usr/bin/python 

Dies ist der Stil, den Sie in Shell-Skripten wie Bash-Skripts sehen werden.Zum Beispiel

#!/bin/bash 

Sehen, dass die offiziellen tuts mit der ersten Option zu gehen, die wahrscheinlich die beste Wahl ist. Konsistenz im Code ist etwas, um das es sich zu bemühen gilt!

+1

Als Referenz ist die erste besser, weil es tragbar ist. Nicht jedes Dateisystem hat die zweite Option. – JasTonAChair