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 とかでもうまく動いてくれたら最高なんだけどなぁ。どうも動いてくれないんだよなぁ。。なんかいい方法ないんかなぁ。。