254

変更されたすべてのコードを IPython に自動的にリロードさせる方法はありますか? 各行がシェルで実行される前、または具体的に要求されたときに失敗します。私は IPython と SciPy を使用して多くの探索的プログラミングを行っていますが、変更するたびに各モジュールを手動でリロードする必要があるのは非常に面倒です。

4

6 に答える 6

426

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
于 2012-05-06T17:37:38.413 に答える
111

前述のとおり、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 で動作します

于 2012-12-19T21:16:34.550 に答える
68

改訂-IPythonが更新されたため、以下のAndrew_1510の回答を参照してください。

..。

ほこりっぽいバグレポートからそこにたどり着く方法を理解するのは少し難しいですが、:

現在IPythonに同梱されています!

import ipy_autoreload
%autoreload 2
%aimport your_mod

# %autoreload? for help

...その後、電話をかけるたびにyour_mod.dwim()、最新バージョンが取得されます。

于 2011-01-22T00:12:08.500 に答える
14

以下のような行でファイルipython_config.pyを ~/.ipython/profile_default ディレクトリに追加すると、IPython の起動時に自動リロード機能が読み込まれます (2.0.0 でテスト済み)。

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')
于 2014-05-21T19:55:20.790 に答える
2

以下を使用できます。

  import ipy_autoreload
  %autoreload 2 
  %aimport your_mod
于 2013-05-23T15:03:18.727 に答える
0

そのための拡張機能がありますが、私はまだ使用経験がありません:

http://ipython.scipy.org/ipython/ipython/attachment/ticket/154/ipy_autoreload.py

于 2009-12-15T15:06:47.217 に答える