4

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

私はグーグルで検索し、サブモジュールをインポートまたはリロードする必要があることを示す投稿を見つけました。したがって、基本的な概要は次のとおりです。

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()関数内ではモジュールにアクセスできますが、メインコードではアクセスできません。

2つの質問:

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

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

4

1 に答える 1

5

すべてのモジュールをアンロードして、次のインポートで再ロードするのはどうですか。

import sys
sys.modules.clear()
于 2013-07-28T18:51:02.887 に答える