金魚亭日常

読書,ガジェット,競技プログラミング

ImageJ の GUI plugin

ImageJ の GUI plugin を作っていて,ボタンを押したときに一回目は動くのだけれど,なぜか2回目以降は NameError で import した module が認識されない.

実験した限りだと,下のスクリプトで何回か画像を開いて閉じてしていると,5回目ぐらいから NameError になる. メモリ使用量が50%超えたぐらいで多分GCが起こっていて,import したmodule が消えるみたいだ.

gist762821786256875758da603517959298

結局,plugin 以下に置いていたものを jars/Lib に移し,plugin 以下には jars/Lib から module として import して実行する,以下のスクリプトを置いた.

from OverlayManagerPlus import OverlayManagerPlus

if __name__ == '__main__':
    OverlayManagerPlus.OverlayManagerPlus()

こうすると,jars/Lib のものはコンパイルされて script$py.class となり,こうなると問題は起きないようだった.

よくわからん.