web-dev-qa-db-ja.com

ipython内でpythonスクリプトを実行する

パスを指定せずにipython内からpythonスクリプト(モジュールではない)を実行することは可能ですか? PYTHONPATHを設定しようとしましたが、モジュールでのみ機能するようです。実行したい

%run my_script.py

ファイルを含むディレクトリにいなくても。

109
Tyler Durden

「my_script.py」のディレクトリ内から簡単に実行できます。

%run ./my_script.py
95
rakke

Ipythonでスクリプトを実行する方法

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

それはそれを行う必要があります

22
CubeBot88

pythonでは、モジュールとスクリプトに違いはありません。スクリプトとモジュールの両方を実行できます。 pythonは問題のファイルを見つけられる必要があるため、ファイルはpythonpath AFAIKになければなりません。 pythonがディレクトリから実行されると、ディレクトリは自動的にpythonpathに追加されます。

モジュールとスクリプトの詳細については、 Pythonスクリプトを別のPythonスクリプトから呼び出す最良の方法は何ですか? を参照してください。

あなたがしたいことをする組み込み関数execfile(filename)もあります

16

%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が変化している速度は、独自のマジックを定義するのと同じくらい機能し続ける可能性があります。

15
ecatmur

for Python 3.6.5 import os os.getcwd()runfile( 'testing.py')

0
Alinafe