Wie kann man ein Python-Skript von der Konsole aus ausführen, ohne den vollständigen Pfad zu schreiben?


8

Ich habe ein paar Python-Skripte unter / usr / share / scripts /, die ich häufig verwende, und ich möchte sie ausführen können, indem ich nur den Namen und nicht den vollständigen Pfad schreibe. Wie kann ich das tun?

echo $ PATH zeigt mir:

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

Also habe ich versucht, auf dem Terminal zu schreiben:

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

Es werden keine Fehler angezeigt und echo $ PATH zeigt jetzt meinen neuen Skriptpfad an , aber wenn ich scriptName ausführe , wird der Befehl nicht gefunden.

Was mache ich falsch?


Wie hast du es richtig gemacht?
Ignacio Vazquez-Abrams

Ich habe es vorher nicht gemacht.
Grerdas

Du hast sie nicht geführt? Ich dachte, Sie sagten, Sie hätten sie oft benutzt ...
Ignacio Vazquez-Abrams

@Ignacio Vazquez-Abrams: Oh, ich habe Ihre Frage nicht verstanden, sorry, ich habe sie wie "/usr/share/scripts/scriptName.py args"
grerdas

Antworten:


9

Festlegen ausführbarer Berechtigungen für Python-Skripte mit "chmod + x *"
Jetzt haben Sie zwei Möglichkeiten:

  • Fügen Sie Ihr Skriptverzeichnis zur PATH env-Variablen hinzu, oder
  • Erstellen Sie nacheinander symbolische Links zu Ihren Skripten (oder schreiben Sie ein anderes Skript, um dasselbe zu tun) im /usr/local/binVerzeichnis.

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

Inhalt der Datei:

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

Ich hoffe, dies wird dir helfen.


Gibt es eine Möglichkeit, eine Version für Windows zu erstellen? (Ich weiß, das ist eine Linux-Frage)
Iulian Onofrei

1

Okay, vielleicht bin ich nur eine ältere Schule ...
Fügen Sie in / usr / bin Shell-Skripte mit dem Header #! / Bin / bash und der Erweiterung .sh hinzu. Führen Sie dann in diesen Skripten einfach python absolutepath aus.

Warum ich denke, dass es besser ist als die anderen Antworten:
Sie müssen Ihre Skripte nicht ändern, um sie ausführbar zu machen.
Sie müssen Ihre Skripte nicht umbenennen.


Vergiss die Argumente nicht.
Juanitogan

0

Entschuldigen Sie, dass Sie eine grundlegende Sache vorgeschlagen haben. Haben Sie "scriptname.py" anstelle von "scriptname" ausprobiert?

Außerdem müssen alle Skripte über Ausführungsberechtigungen verfügen (Sie können dies tun, indem Sie "chmod + x script.py" ausgeben). Nach Ihrem obigen Kommentar zu urteilen, da Sie sie wie "/ usr / share / scripts / scriptName" ausgeführt haben. py args ", sie sollten Ausführungsberechtigungen haben.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.