2009-07-22 16 views
12

Sto scrivendo un'applicazione piuttosto semplice in python (è solo un file al momento). La mia domanda è come ottenerlo in modo che lo script python possa essere eseguito in/usr/bin senza l'estensione .py?Script Python in/usr/bin

Per esempio, invece di correre

python htswap.py args 

dalla directory in cui lo sia attualmente, voglio essere in grado di cd in qualsiasi directory e fare

htswap args 

Grazie in anticipo!

risposta

31

Basta rimuovere l'estensione .py rinominando il file. Quindi, si deve mettere la seguente linea nella parte superiore del file:

#!/usr/bin/env python 

env è un piccolo programma che imposta l'ambiente in modo che venga eseguito il diritto python interprete.

si hanno anche per rendere il vostro file eseguibile, con il comando

chmod a+x htswap 

e discarica in /usr/local/bin. Questo è più pulito di /usr/bin, perché il contenuto di quella directory è solitamente gestito dal sistema operativo.

+0

dopo molte esperienze di dolore e pre-morte, suggerisco di usare la specifica versione di Python che sviluppi per #!/usr/bin/env python . (es. python2.4) invece. Meglio avere il controllo della versione python è in esecuzione l'eseguibile (almeno per i casi che ho vissuto, YMMV) –

13

La prima riga del file deve essere

#!/usr/bin/env python 

È necessario rimuovere l'estensione .py, e rendere il file eseguibile, utilizzando

chmod ugo+x htswap 

EDIT:Thomas fa giustamente notare che tale gli script devono essere inseriti in /usr/local/bin anziché in /usr/bin. Per favore, invertire la sua risposta (a spese del mio, forse. Sette upvotes (come diciamo) per questo genere di cose è ridicolo)

+0

Sì, è stato così, l'ho fatto prima e per qualche motivo non ha funzionato, risulta che ho dimenticato il! nello shebang –

2

Shebang?

#!/usr/bin/env python 

Metti che all'inizio del file e il gioco è fatto

+2

Oh baby quando si muove ... – Alex

1

aggiungere #!/usr/bin/env python fino alla cima della htswap.py e rinominare htswap.py-htswap poi fare un comando: chmod +x htswap per fare htswap eseguibile.

-1

vedo nelle esercitazioni Python ufficiali, http://docs.python.org/tutorial/index.html, che

#! /usr/bin/env python 

viene usato proprio come le risposte di cui sopra suggeriscono. Nota che puoi anche usare il seguente

#!/usr/bin/python 

Questo è lo stile che vedrai negli script di shell, come gli script di bash.Per esempio

#!/bin/bash 

Visto che i tuts ufficiali vanno con la prima opzione che è probabilmente la soluzione migliore. La coerenza nel codice è qualcosa per cui lottare!

+1

Per riferimento, il primo è migliore perché è portatile. Non tutti i file system hanno la seconda opzione. – JasTonAChair