IPython でのモジュールの自動リロード [重複]
-
19-09-2019 - |
質問
この質問にはすでに答えがあります:
- IPython でのサブモジュールのリロード 11 件の回答
IPython に変更されたすべてのコードを自動的にリロードさせる方法はありますか?シェルで各行が実行される前、または特に要求されたときに実行が失敗するかのいずれかです。私は IPython と SciPy を使用して多くの探索的なプログラミングを行っていますが、モジュールを変更するたびに各モジュールを手動でリロードしなければならないのは非常に面倒です。
解決
IPythonバージョン3.1の場合、4.xでは、および5.x
%load_ext autoreload
%autoreload 2
次に、あなたのモジュールは、デフォルトではを自動再読み込みのだろう。これはドキュメントです。
File: ...my/python/path/lib/python2.7/site-packages/IPython/extensions/autoreload.py
Docstring:
``autoreload`` is an IPython extension that reloads modules
automatically before executing the line of code typed.
This makes for example the following workflow possible:
.. sourcecode:: ipython
In [1]: %load_ext autoreload
In [2]: %autoreload 2
In [3]: from foo import some_function
In [4]: some_function()
Out[4]: 42
In [5]: # open foo.py in an editor and change some_function to return 43
In [6]: some_function()
Out[6]: 43
The module was reloaded without reloading it explicitly, and the
object imported with ``from foo import ...`` was also updated.
トリックがあります:あなたはときipython
を使用した場合、すべてのを上記のことを忘れ、ただ試してください:
import autoreload
?autoreload
# Then you get all the above
他のヒント
、あなたはautoreload
拡張を必要とします。あなたはそれが自動的にあなたがipython
を起動するたびに起動したい場合は、ipython_config.py
起動ファイルに追加する必要があります:
これは最初のものを生成する必要があるかもしれない:
ipython profile create
次に~/.ipython/profile_default/ipython_config.py
にこれらの行が含まれます:
c.InteractiveShellApp.exec_lines = []
c.InteractiveShellApp.exec_lines.append('%load_ext autoreload')
c.InteractiveShellApp.exec_lines.append('%autoreload 2')
と同様に、あなたが.pyc
ファイルにコンパイルされたPythonコードを活用する必要がある場合は、オプションの警告:
c.InteractiveShellApp.exec_lines.append('print "Warning: disable autoreload in ipython_config.py to improve performance." ')
編集:バージョン0.12.1および0.13
と上記の作品改訂 - IPythonが更新されたとしてAndrew_1510のの答えhref="https://stackoverflow.com/a/10472712/12892">参照してください。
。...
これは少し難しいの図は、ほこりの多いバグレポートからそこに取得する方法を出ていたが、ます:
IPythonとで発送になりました!
import ipy_autoreload
%autoreload 2
%aimport your_mod
# %autoreload? for help
...あなたはyour_mod.dwim()
を呼び出すたびに、それが最新のバージョンを拾うでしょう。
あなたにipython_config.py追加する場合は〜/ .ipython / profile_default dirのような行で以下その後、自動再ロード機能は、(2.0.0でテスト)ipython起動時にロードされます。
print "--------->>>>>>>> ENABLE AUTORELOAD <<<<<<<<<------------"
c = get_config()
c.InteractiveShellApp.exec_lines = []
c.InteractiveShellApp.exec_lines.append('%load_ext autoreload')
c.InteractiveShellApp.exec_lines.append('%autoreload 2')
あなたが使用することができます:
import ipy_autoreload
%autoreload 2
%aimport your_mod
はそのための拡張機能がありますが、私はまだ使用状況の経験を持っていません。
http://ipython.scipy.org/ipython /ipython/attachment/ticket/154/ipy_autoreload.pyする