Comment exécuter le script python à partir de la console sans écrire le chemin complet?


8

J'ai quelques scripts python sur / usr / share / scripts / que j'utilise souvent, et je veux pouvoir les exécuter en écrivant simplement le nom et non le chemin complet, comment pourrais-je faire cela?

echo $ PATH me montre:

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

J'ai donc essayé d'écrire sur le terminal:

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

Aucune erreur ne s'affiche et echo $ PATH affiche maintenant mon nouveau chemin de scripts, mais lorsque j'exécute scriptName, j'obtiens une commande introuvable.

Qu'est-ce que je fais mal?


Comment l'as-tu fait avant?
Ignacio Vazquez-Abrams

Je ne l'avais pas fait avant.
grerdas

Vous ne les avez pas exécutés? Je pensais que tu avais dit que tu les utilisais souvent ...
Ignacio Vazquez-Abrams

@Ignacio Vazquez-Abrams: Oh, je n'ai pas compris votre question désolé, je les ai exécutés comme "/usr/share/scripts/scriptName.py args"
grerdas

Réponses:


9

Définissez les autorisations exécutables pour les scripts python par "chmod + x *"
Vous avez maintenant deux options:

  • Ajoutez votre répertoire de scripts à la variable d'environnement PATH, ou
  • Créez des liens symboliques vers vos scripts un par un (ou écrivez un autre script pour faire de même) dans le /usr/local/binrépertoire.

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

Contenu du dossier:

#!/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 ~]$

J'espère que cela t'aidera.


Une possibilité de faire une version pour Windows? (Je sais que c'est une question Linux)
Iulian Onofrei

1

D'accord, je suis peut-être juste une école plus ancienne ...
Dans / usr / bin, ajoutez des scripts shell avec l'en-tête #! / Bin / bash et sans extension .sh. Ensuite, dans ces scripts, exécutez simplement python absolutepath.

Pourquoi je pense que c'est mieux que les autres réponses:
ne nécessite pas de modifier vos scripts pour les rendre exécutables.
Ne nécessite pas de renommer vos scripts.


N'oubliez pas les arguments.
juanitogan

0

Désolé de suggérer une chose de base .. Avez-vous essayé "scriptname.py", au lieu de simplement "scriptname"?

En outre, tous les scripts doivent avoir des autorisations d'exécution (vous pouvez le faire en émettant "chmod + x script.py"). À en juger par votre commentaire ci-dessus, car vous les avez exécutés comme "/ usr / share / scripts / scriptName. py args ", ils devraient avoir des autorisations d'exécution.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.