iPython を起動中にモジュールを再読み込みさせたい
iPython でモジュールとかファイル読み込んで色々試しながら、エディタでソースをいじってちょこちょこ変更してくってことをよくやるんだけど、いちいち iPython 再起動&再 import したりしてたもんですげーめんどくせーなーと思いながらやってた。で、なんかいい方法ないかなーと探してみたら実はちゃんと再読み込みするコマンドあったみたいなんでメモ。
reload、dreload、run とかを使うらしいっす。
import Sample っぽいことをした場合
とりあえず『reload』。
In [17]: reload Sample -------> reload(Sample) Out[17]: <module 'Sample' from 'Sample.pyc'>
import したモジュールの中でさらにモジュールを import してて、そいつらも一気に reload したい場合は『dreload』を使う。
# Sample の中で import random だけしてた場合 In [18]: dreload Sample -------> dreload(Sample) Reloading Sample Reloading random Reloading warnings Reloading types Reloading _types Reloading linecache Reloading os Reloading errno Reloading posix Reloading posixpath Reloading stat Reloading UserDict Reloading copy_reg Reloading math Reloading binascii Reloading _random Out[18]: <module 'Sample' from 'Sample.py'>
こんな感じ。
基本的に py ファイルを import している場合は reload や drelaod でうまくいく。
from Sample import * っぽいことをした場合
こうやって import したモジュールとか関数は reload や dreload でもうまく再読み込みできない。
そういうときは、うまくいかんときもあるけど『run』を使うとうまいこと再読み込みしてくれるときがある。
In [22]: %run Sample
ただファイルを実行してるだけなんで普通に実行してエラーがでるやつには適用できんけど。。
あと Django の manage.py shell とかでもうまく動いてくれたら最高なんだけどなぁ。どうも動いてくれないんだよなぁ。。なんかいい方法ないんかなぁ。。