So führen Sie ein Python-Skript portabel aus, ohne den vollständigen Pfad anzugeben

Gibt es eine tragbare Möglichkeit, ein Python-Skript von einer Shell aus auszuführen, ohne den vollständigen Pfad zu schreiben?

Zum Beispiel unter Linux würde ich gerne in meinem Homeverzeichnis sein

<code>cd ~
</code>

in der Lage zu sein, ein Python-Skript namens run.py auszuführen, das heißt ~ / long / path / to / run.py, aber ich möchte es einfach durch Eingabe ausführen

<code>python run.py
</code>

anstatt

<code>python ~/long/path/to/run.py
</code>

Ich würde auf eine Art Suchpfadliste hoffen, die genau wie die PATH-Variable mehrere Verzeichnisse enthält, sodass python run.py das erste run.py ausführt, das es in einem der Verzeichnisse findet.

Ich habe überlegt, run.py in eine ausführbare Datei umzuwandeln und ihr Verzeichnis als System-PATH-Variable hinzuzufügen, konnte jedoch keine tragbare Möglichkeit finden, ein Python-Skript ausführbar zu machen.

BEARBEITEN

Ein Jahr später, nachdem ich es gefragt habe, bin ich ein bisschen weniger neugierig und sehe, dass meine Frage nicht sehr klar und nicht sehr sinnvoll war. Nach einer Frage im Nachhinein werde ich einige Dinge klären.

1) tragbar.

Als ich das fragte, sagte ich tragbar. Was Portable bedeutet, ist in diesem Fall jedoch nicht klar, und ich habe nicht viel Wert darauf gelegt.

Die Plattformen: sollten unter POSIX (Linux, MacOS usw.) und Windows funktionieren

Dies ist immer noch nicht sehr sinnvoll, da Windows verwendetcmd.exeund POSIX verwendetsh, so dass jeder die Befehle mit einer anderen Syntax ausführen könnte. Nehmen wir also an, dass es am portabelsten ist, beiden den gleichen Eingang zu gebensh undcmd.exeFühren Sie in beiden Fällen das Python-Skript aus. In diesem Fall können Sie denselben Befehl von einem ANSI C ausführensystem Funktion, die verwendetsh auf POSIX undcmd unter Windows. Da ANSI C eines der wenigen Dinge ist, die Windows und POSIX gemeinsam haben, ist die Frage in diesem Fall sinnvoll.

2) Ausführbar

Als nächstes die Phraseturning run.py into an executableist nicht sehr klar. Damit sprach ich über die Linux - Strategie vonchmod +x run.py, füge einen Shebang hinzu#!/usr/bin/env pythonFügen Sie in das Verzeichnis ~ / long / path / der Umgebungsvariablen PATH hinzu. Dies funktioniert dann jedoch nicht für Windows, da Windows eine ausführbare Datei-Metadaten-Eigenschaft wie Linux nicht unterstützt und / usr / bin / env in Windows nicht unbedingt vorhanden ist.

3) Verlängerung

Schließlich hoffte ich in meinem Kopf auf eine Lösung, die nicht genau angibt, um welche Art von Datei es sich handelt, sodass sich, wenn wir uns eines Tages beispielsweise für eine Perl-Datei entscheiden, keine Schnittstellen ändern würden.

Deshalb schreibenrun.py wäre schlecht, weil es den Dateityp spezifizieren würde; es wäre besser, einfach schreiben zu könnenrun

Antworten auf die Frage(4)

Ihre Antwort auf die Frage