1. ホーム
  2. パイソン

[解決済み】IPythonのモジュールのオートリロード【重複あり

2022-04-04 02:50:40

質問

IPythonに、変更されたコードを自動的に再読み込みさせる方法はありますか?各行がシェルで実行される前に、またはそれが具体的に要求されたときに失敗することができます。私はIPythonとSciPyを使って多くの探索的プログラミングをしていますが、モジュールを変更するたびに手動で再読み込みしなければならないのは非常に苦痛です。

どのように解決するのですか?

IPythonバージョン3.1、4.x、5.xの場合

%load_ext autoreload
%autoreload 2

そうすると、あなたのモジュールは 自動リロード をデフォルトで使用します。これは、doc:

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