Esegui gli script Python senza invocare esplicitamente `python`


40

Sto usando Debian Linux.

Mi chiedevo se ci fosse un modo per configurare l'esecuzione di tutti gli script Python nel terminale digitando script.py(anziché python script.py).

Risposte:


58

Ci sono due cose che devi fare:

  • Assicurarsi che il file sia eseguibile: chmod +x script.py
  • Usa uno shebang per far sapere al kernel quale interprete usare. La riga superiore dello script dovrebbe contenere:

    #!/usr/bin/python
    

    Ciò presuppone che lo script verrà eseguito con il pitone predefinito. Se hai bisogno di una versione specifica, specifica nello shebang:

    #!/usr/bin/python2.7
    

Ora puoi digitare:

    ./script.py

se lo script si trova nella directory corrente oppure:

    script.py

se la posizione dello script si trova nel PERCORSO o:

    path/to/script.py

altrimenti.


32
Generalmente è un'idea migliore da usare #!/usr/bin/env python, nel caso in cui l'utente abbia una build locale di python (ad esempio, in /usr/local/bin) con cui preferirebbe eseguire lo script.
sapi,

3
@sapi Non secondo Debian non lo è, almeno nelle loro politiche di sviluppo. Se stai scrivendo i tuoi script, puoi ovviamente accettare il rischio, è meglio essere espliciti. Se vuoi quello locale, sceglilo nello shebang.
Paul,

3
Non è bashche legge il file durante l'esecuzione ...
unperson325680

@progo Questo è vero - nota che se vedi una risposta che ritieni possa trarre beneficio da un miglioramento, vai avanti e modificalo, i miglioramenti sono sempre ben accetti
Paul,

E non dovrai fare ./script.pyaltroscript.py
Paul Draper,

33

Sotto Linux puoi semplicemente usare l'hashbang (aka shebang). Aggiungi la linea

#!/usr/bin/python

se si desidera eseguire l'interprete Python predefinito.

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

per utilizzare una versione specifica o

#!/usr/bin/env python

Se vuoi che l'ambiente trovi Python per te.

Ti verrà inoltre richiesto di rendere eseguibile lo script

chmod +x script[.py] 

2

Uso:

#!/usr/bin/env python

Questo assicurerà che il python che l'utente si aspetta di usare sia quello che esegue lo script. Ciò è particolarmente importante se l'utente utilizza virtualenv per avere una versione specifica di Python in un determinato ambiente.


0

Usa una riga shebang nella parte superiore dello script come di seguito:

! / Usr / bin / python

Aggiorna la versione appropriata di Python su cui desideri eseguire lo script. ad es. per python 3.6 è

! /usr/bin/python3.6

per interprete predefinito

! / Usr / bin / python

Nota: assicurarsi che lo script disponga dell'autorizzazione eseguibile.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.