web-dev-qa-db-de.com

Ausführen von python script in ipython

Ist es möglich, ein python script (nicht module)) in ipython auszuführen, ohne den Pfad anzugeben? Ich habe versucht, PYTHONPATH festzulegen, aber es scheint nur für Module zu funktionieren. Ich möchte es ausführen

%run my_script.py

ohne sich in dem Verzeichnis zu befinden, das die Datei enthält.

110
Tyler Durden

im Verzeichnis "my_script.py" können Sie einfach Folgendes tun:

%run ./my_script.py
99
rakke

So führen Sie ein Skript in Ipython aus

import os
filepath='C:\\Users\\User\\FolderWithPythonScript' 
os.chdir(filepath)
%run pyFileInThatFilePath.py

Das sollte es tun

23
CubeBot88

In python gibt es keinen Unterschied zwischen Modulen und Skripten; Sie können sowohl Skripten als auch Module ausführen. Die Datei muss sich im Pythonpfad AFAIK befinden, da python fähig sein muss Wenn python aus einem Verzeichnis ausgeführt wird, wird das Verzeichnis automatisch zum pythonpath hinzugefügt.

Weitere Informationen zu Modulen und Skripten finden Sie unter Wie kann ein Python Skript von einem anderen Python Skript? am besten aufgerufen werden?)

Es gibt auch eine eingebaute Funktionsdatei (Dateiname), die das tut, was Sie wollen

16

Die Magie %run Hat einen Parameter file_Finder, Mit dem der vollständige Pfad zur auszuführenden Datei abgerufen wird (siehe hier ); Wie Sie bemerken, sieht es nur im aktuellen Verzeichnis aus und fügt bei Bedarf ".py" hinzu.

Es scheint keine Möglichkeit zu geben, den zu verwendenden Datei-Finder aus der Magie %run Festzulegen, aber es gibt nichts, das Sie aufhalten könnte von der Definition eines eigenen Magic-Befehls, der mit einem geeigneten File Finder %run aufruft.

Als sehr böser Hack können Sie den Standardwert file_Finder Mit Ihrem eigenen überschreiben:

IPython.core.magics.execution.ExecutionMagics.run.im_func.func_defaults[2] = my_file_Finder

Um ehrlich zu sein, mit der Geschwindigkeit, mit der sich die IPython-API ändert, funktioniert dies wahrscheinlich genauso wie die Definition Ihrer eigenen Magie.

15
ecatmur

für Python 3.6.5 import os os.getcwd () runfile ('testing.py')

1
Alinafe