2017-04-17 4 views
2

Ich habe gerade angefangen, Python mit Learning Python von Mark Luts zu lernen. In seinem Buch bietet er ein Beispiel für ein einfaches Skript, das über die Windows-Shell aufgerufen wird. Im Beispiel nennt er sich wie folgt:Ausführen von Python-Skripten über die Windows-Befehlszeile

C:\code> python script1.py 

Ich habe auf meinem Rechner die Umgebungsvariablen gegangen und so modifiziert, dass ich anrufen kann

C:\User\Example> python 

den Dolmetscher zu öffnen, und ich kann auch Rufen Sie etwas wie

C:\User\Example> script1 

an, um ein Skript auszuführen, das ich geschrieben und in meinem gewünschten Verzeichnis abgelegt habe. Mein Problem ist, dass ich in meiner Befehlszeile genauso wie in dem Buch

nicht aufrufen kann. Er hat etwas über eine PYTHONPATH-Umgebungsvariable erwähnt, diese Variable ist jedoch nicht auf meiner Maschine vorhanden. Ich habe nur "Pfad", "TEMP" und "TMP". Besonders, wenn ich versuche, einen solchen Anruf zu tätigen erhalte ich die Fehler

python: can't open file 'script1.py': [Errno 2] No such file or directory 

Was muss ich tun, um diese Art von Befehl zu bekommen ordnungsgemäß auf der Kommandozeile zu arbeiten?

+0

Klingt wie ein Problem mit 'script1.py 'ist nicht in Ihrem 'C: \ User \ Example' -Verzeichnis vorhanden, da es scheint, dass die' PATH' -Variable so eingerichtet ist, dass 'python' von der Kommandozeile aus aufgerufen werden kann (da Sie dazu in der Lage sind) . Haben Sie überprüft, ob Sie den Befehl 'python' im selben Verzeichnis ausführen, in dem sich Ihr Skript befindet? – wheeler

+0

@wheeler Ich speichere meine Python-Skripte und den Python-Interpreter an zwei verschiedenen Orten, von denen keiner das Verzeichnis C: \ User \ Example ist. Ich habe meine PATH-Variable bearbeitet und bearbeitet, um sie in Dateipfade in das Verzeichnis mit meinem Interpreter und in das Verzeichnis mit meinen Skripten aufzunehmen. Zum Beispiel befindet sich mein Python-Interpreter im Verzeichnis C: \ User \ Example \ Python36 und meine Skripte befinden sich im Verzeichnis C: \ User \ Example \ my_scripts. –

+0

'keiner von ihnen ist das Verzeichnis C: \ User \ Example' Da ist Ihre Antwort. Sie rufen Python aus diesem Verzeichnis auf und geben ihm den Namen einer Datei, die nicht in dem Verzeichnis vorhanden ist, in dem Sie sich gerade befinden. Da es nur der Name der Datei ist, muss ** in dem Ordner vorhanden sein, in dem Sie sich gerade befinden in für den Befehl zu arbeiten. Mit anderen Worten, Sie müssen mit dem Dienstprogramm 'cd' zu Ihrem' my_scripts'-Verzeichnis navigieren, um 'python script1.py' auszuführen. – wheeler

Antwort

0

Aus dem Buch (S. 44, 4. Aufl.):

Schließlich erinnern, den vollständigen Pfad zu Ihrem Skript geben, wenn es in einem anderen Verzeichnis aus dem man lebt, in dem Sie arbeiten.

Für Ihre Situation bedeutet dies

C:\User\Example> python C:\User\Example\my_scripts\script1.py 

mit Sie können eine Batchdatei schreiben, die für das Skript in einem vorgegebenen Verzeichnis aussieht:

@echo off 
setlocal 
PATH=C:\User\Example\Python36;%PATH% 
SCRIPT_DIR=C:\User\Example\my_scripts 
python %SCRIPT_DIR\%* 
+0

Es scheint, dass ich falsch gelesen habe. Danke, dass du das erklärst. –

+0

Ein korrekt installiertes Python 3.6 sollte .py [w] -Dateien mit dem Startprogramm py.exe verbinden und Befehlszeilenargumente übergeben. Der py-Launcher behandelt die Ausführung mehrerer Python-Versionen basierend auf der Shebang-Zeile des Skripts. Fügen Sie 'C: \ User \ Example \ my_scripts' zu' PATH' und '.PY' zu' PATHEXT' hinzu. Führen Sie dann 'script1' direkt aus. – eryksun

0

Sie rufen python aus dem Kontext von C:\User\Example, und übergeben Sie den Namen einer Datei, die Sie durch den Interpreter (script1.py) ausführen möchten. Es ist klar, dass die PATH Variable richtig eingerichtet ist, so dass Sie python von überall auf Ihrem Computer aufrufen können, da wir sehen können, dass es ausgeführt wird, aber nicht in der Lage, Ihr Skript zu finden.

Sie haben jedoch in dem Kommentar angegeben, dass sich Ihre Skripts tatsächlich in C:\User\Example\my_scripts befinden. Mit anderen Worten, Sie übergeben python den Namen einer Datei, die nicht existiert !! (zumindest aus dem Zusammenhang von C:\User\Example).

Sie müssen im Verzeichnis des Skripts sein, damit die python ausführbare Datei es finden kann.

Alternativ können Sie den Befehl python ausführen und ihm weitere Informationen zum Speicherort des Skripts geben. Zum Beispiel könnten Sie python .\my_scripts\script1.py ausführen, wenn Sie aus dem Kontext von C:\User\Example ausgeführt werden und Ihre Skripte sind in C:\User\Example\my_scripts.

+0

Also gibt es keine Möglichkeit, eine Umgebungsvariable im Python-Interpreter zu erstellen, so dass ich einen "Standard" -Standort für meine Skripte neben C: \ User \ Beispiel wie C: \ User \ Example \ my_scripts haben kann Ich kann solche Aufrufe wie 'C: \ User \ Example> python script1.py' machen? Wie ich im Originalbeitrag gesagt habe, erwähnt mein Buch eine PYTHONPATH-Variable, die ähnlich wie ich zu beschreiben scheint. –

+0

Richtig, es gibt keine Möglichkeit, dies zu tun. PYTHONPATH funktioniert nicht so, wie es in dem Buch beschrieben wurde. Es funktioniert für ** Importieren ** Module, nicht ausgeführt werden. Werfen Sie einen Blick auf [this] (http://stackoverflow.com/questions/19917492/how-to-use-pythonpath) SO Frage und Antwort, die eine nahezu identische Situation beschreibt, und [hier] (https: // docs. python.org/2/using/cmdline.html#envvar-PYTHONPATH) ist das Referenzhandbuch für das weitere Lesen. – wheeler

+0

Welches Buch benutzen Sie? – wheeler

Verwandte Themen