Come eseguire lo script Python dalla console senza scrivere il percorso completo?


8

Ho alcuni script Python su / usr / share / scripts / che uso spesso e voglio essere in grado di eseguirli semplicemente scrivendo il nome e non il percorso completo, come potrei farlo?

echo $ PATH mi mostra:

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/opt/real/RealPlayer

Quindi ho provato a scrivere sul terminale:

PATH="/usr/share/scripts/:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/opt/real/RealPlayer"
export

Nessun errore mostrato ed echo $ PATH ora mostra il mio nuovo percorso di script, ma quando eseguo scriptName ottengo il comando non trovato.

Che cosa sto facendo di sbagliato?


Come hai fatto prima?
Ignacio Vazquez-Abrams,

Non l'ho mai fatto prima.
Grerdas,

Non li hai gestiti? Pensavo avessi detto di usarli spesso ...
Ignacio Vazquez-Abrams,

@Ignacio Vazquez-Abrams: Oh, non ho capito la tua domanda, scusa, le ho eseguite come "/usr/share/scripts/scriptName.py args"
grerdas,

Risposte:


9

Imposta le autorizzazioni eseguibili per gli script Python con "chmod + x *"
Ora hai due opzioni:

  • Aggiungi la directory degli script alla variabile env PATH o
  • Crea collegamenti simbolici ai tuoi script uno alla volta (o scrivi un altro script per fare lo stesso) nella /usr/local/bindirectory.

Esempio:
[mzed@node02 test]$ vim printme.py

Contenuto del file:

#!/usr/bin/python
print "This is cool!"

-

[mzed@node02 test]$ mv printme.py printme
[mzed@node02 test]$ chmod +x printme
[mzed@node02 ~]$ cd /usr/local/bin/
[mzed@node02 bin]$ sudo ln -s ~/test/printme .
[mzed@node02 bin]$ ls
deskzilla  grails  grails-debug  printme  startGrails
[mzed@node02 bin]$ cd
[mzed@node02 ~]$ printme 
This is cool!
[mzed@node02 ~]$

Spero che questo ti possa aiutare.


Qualche possibilità di creare una versione per Windows? (So ​​che questa è una domanda Linux)
Iulian Onofrei

1

Ok, forse sono solo una vecchia scuola ...
In / usr / bin aggiungi script di shell con l'intestazione #! / Bin / bash e nessuna estensione .sh. Quindi in quegli script basta eseguire python absolutepath.

Perché penso che sia meglio delle altre risposte:
non richiede di modificare i tuoi script per renderli eseguibili.
Non richiede la ridenominazione degli script.


Non dimenticare gli argomenti.
juanitogan,

0

Ci scusiamo per aver suggerito una cosa di base .. Hai provato "scriptname.py", invece di "scriptname"?

Inoltre, tutti gli script devono avere i permessi di esecuzione (puoi farlo emettendo "chmod + x script.py"). A giudicare dal tuo commento sopra, dato che li hai eseguiti come "/ usr / share / scripts / scriptName. py args ", dovrebbero avere i permessi di esecuzione.

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.