Python ShellとExecFileスコープ
質問
私はIPythonシェル内から作業しており、多くの場合、建設の下にある機能を含むスクリプトファイルをリロードする必要があります。
私のmain.pyの中に私は持っています:
def myreload():execfile( "main.py")execfile( "otherfile.py")
MyReload()を呼び出すと、同じiPythonセッションでexecfileが直接コマンドしている場合は、正常に動作します。
ただし、何らかの理由で、セッションが新鮮で、execfile( "main.py")と呼ばれる場合、myreload()は実際には他のfile.py内からの関数を使用できません。ただし、エラーはスローされません。
何か案は?
解決
関数は新しいスコープを作成します。 execfile()
現在の範囲でスクリプトを実行します。あなたがしていることはうまくいきません。
他のヒント
あなたが実際の正しい使用法を学ぼうとした場合 イピトン (つまり、インタラクティブモードで)、次のような魔法コマンドを使用する必要があります。
%run
と
%edit
これらの機能のヘルプを確認してください %run?
. 。これにより、明示的な例が提供されます。
参照してください http://ipython.org/ipython-doc/stable/interactive/tutorial.html
所属していません StackOverflow