パスを指定せずにipython内からpythonスクリプト(モジュールではない)を実行することは可能ですか? PYTHONPATHを設定しようとしましたが、モジュールでのみ機能するようです。実行したい
%run my_script.py
ファイルを含むディレクトリにいなくても。
「my_script.py」のディレクトリ内から簡単に実行できます。
%run ./my_script.py
import os
filepath='C:\\Users\\User\\FolderWithPythonScript'
os.chdir(filepath)
%run pyFileInThatFilePath.py
それはそれを行う必要があります
pythonでは、モジュールとスクリプトに違いはありません。スクリプトとモジュールの両方を実行できます。 pythonは問題のファイルを見つけられる必要があるため、ファイルはpythonpath AFAIKになければなりません。 pythonがディレクトリから実行されると、ディレクトリは自動的にpythonpathに追加されます。
モジュールとスクリプトの詳細については、 Pythonスクリプトを別のPythonスクリプトから呼び出す最良の方法は何ですか? を参照してください。
あなたがしたいことをする組み込み関数execfile(filename)もあります
%run
マジックには、実行するファイルへのフルパスを取得するために使用するパラメーターfile_Finder
があります( here を参照)。ご指摘のとおり、必要に応じて「.py」を追加して現在のディレクトリを検索します。
%run
マジックを使用するfromファイルFinderを指定する方法はないようですが、独自のマジックを定義するのを止めるものは何もありません適切なファイルFinderで%run
を呼び出すコマンド。
very厄介なハックとして、デフォルトのfile_Finder
を独自のものでオーバーライドできます。
IPython.core.magics.execution.ExecutionMagics.run.im_func.func_defaults[2] = my_file_Finder
正直に言うと、IPython APIが変化している速度は、独自のマジックを定義するのと同じくらい機能し続ける可能性があります。
for Python 3.6.5 import os os.getcwd()runfile( 'testing.py')