2012-05-10 7 views
4

CCPS(jythonをスクリプトインターフェイスとして使用するプログラマ)のために、Jythonで何かをコーディングする必要があります。しかし、私がプログラムを再起動しない限り、Jythonはエディタでサブモジュールを変更してもサブモジュールを更新しません(起動時間が非常に長い)。 SOのテストと調整は比較的遅いです。動的にJythonをインポートまたはリロードする

私はグーグルで、サブモジュールをインポートまたはリロードする必要があることを示す投稿を見つけました。基本的なアウトラインは、このようにある:私はこれで問題があるしかし

def loader(module, part=None): 
    if not module in sys.modules : 
     if part == None: 
      exec("import "+module) 
     else: 
      exec("from %s import %s" % (module, part))     
    else : 
     exec("reload "+module) 

、モジュールは、私は私のメインのコードでloader()関数内のモジュールにアクセスすることはできませんが、意味、ローカルにロードされます。

つの質問:

各サブモジュールの変更後のJythonを再起動せずにJythonの中のサブモジュールで何かをテストするための正しい方法は何ですか? グローバル名前空間にインポートできるように、グローバルを動的に生成する方法はありますか?

(例えばexec("global %(mod)s = %(mod)s" % ({'mod':module}))

答えて

4

どのように彼らは、次のインポート時に再ロードされるように、ちょうどすべてのモジュールをアンロードについて:

import sys 
sys.modules.clear() 
+0

が、私はそれを見つけることができなかった、そしてここでさらに詳細に説明する:のhttp:/ /code.activestate.com/recipes/81731-reloading-all-modules/また何らかの理由で他に誰も私にこの1年間助けてくれる人はいなかったでしょう... – ted

+1

私はJython 2.5.2を試してみましたが、 'sys.modules.clear()'はエラーにはなりませんが、クラスはリロードされません。 –

関連する問題