2012-03-04 4 views
0

ipythonでは、2つのスクリプトを1つずつ実行する必要があります。 script1の後にscript2を実行すると、script1の関数が正しく動作しません。たとえば、script1は、osライブラリを使用するの行と、関数myfunctの定義を持っています。 ipythonでscript2を実行した後、myfunctを実行しようとしているときにglobal name os in not definedのようなエラーが出ます。私はどこに問題があるのか​​理解できません。どんなヒントもありがとうございます。ipython:2つのスクリプトを実行する方法

+0

script2に 'import script1'行がありますか? –

+0

@ypercubeはい私はこの行を持っています – ashim

+0

問題を示す簡単な例を表示できますか? –

答えて

0

myfunctosモジュールを使用する必要がある場合は、myfunctimport osである必要があります。スクリプトはこのように自己完結型でなければなりません。 ipythonのグローバルなインポートが "run"コマンドの実行間のネームスペースに掛かってしまうという事実に頼らないでください。 2つのスクリプトを実行するには

、それを行うための通常の方法がmain()機能に仕事を入れて、同様に第三スクリプトでそれを使用することです:

import script1 
import script2 
script1.main() 
script2.main() 

おそらく、現在のようなものを持っていますこの:

# script1.py 
print 'hello world from script1' 

そして、他のファイルに:

# script2.py 
print 'hello world from script2' 

次に、インポートして使用することができますモジュールに裸のスクリプトからこれを変換するためには、構造は次のようにより通常のようになります。他のファイルに

# script1.py 

def main(): 
    print 'hello world from script1' 

if __name__ == '__main__': 
    main() 

と同様:

# script2.py 

def main(): 
    print 'hello world from script2' 

if __name__ == '__main__': 
    main() 

上記のように、オリジナルの投稿にscript1とscript2を使用する3番目のファイルを書くことができます。

+0

あなたはあなたの答えの第2部分を詳しく説明できますか?関数内に関数を定義する必要がありますか? – ashim

+0

@capolucaこれらはモジュール名の中の関数です。たぶん、問題の原因となるコードについてもっと詳しく説明する必要があります。 – alexis

+0

はい。いくつかの説明を追加 – wim

関連する問題