パスを示さずに ipython 内から (モジュールではなく) python スクリプトを実行することは可能ですか? PYTHONPATH を設定しようとしましたが、モジュールに対してのみ機能するようです。実行したい
%run my_script.py
ファイルを含むディレクトリにいなくても。
「my_script.py」のディレクトリ内から、次のように簡単に実行できます。
%run ./my_script.py
Python では、モジュールとスクリプトの間に違いはありません。スクリプトとモジュールの両方を実行できます。Pythonは問題のファイルを見つけることができる必要があるため、ファイルはpythonpath AFAIK上にある必要があります。ディレクトリから python を実行すると、そのディレクトリが自動的に pythonpath に追加されます。
別の Python スクリプトから Python スクリプトを呼び出す最良の方法は何ですか?を参照してください。モジュールとスクリプトの詳細については
あなたが望むことをする組み込み関数 execfile(filename) もあります
%run
マジックには、実行するファイルへのフル パスを取得するために使用するパラメーターがfile_finder
あります (こちらを参照)。お気づきのように、必要に応じて「.py」を追加して、現在のディレクトリを検索するだけです。
マジックから使用するファイル ファインダーを指定する方法はないようですが、適切なファイル ファインダーを呼び出す独自の%run
マジック コマンドを定義することを妨げるものは何もありません。%run
非常に厄介なハックとして、デフォルトfile_finder
を独自のものでオーバーライドできます。
IPython.core.magics.execution.ExecutionMagics.run.im_func.func_defaults[2] = my_file_finder
正直なところ、IPython API が変化している速度では、独自の魔法を定義するのと同じくらい機能し続ける可能性があります。
あなたの質問に対する正確な答えではありませんが、スクリプトの実行の最後に ipython への-i
パラメーターを使用して ipython にドロップできます。
ipython -i my_script.py
スクリプトの最後に、スクリプトの変数が使用可能な ipython プロンプトにドロップされますpython -i
。