Autoreload of modules in IPython
本问题已经有最佳答案,请猛点这里访问。
有没有办法让IPython自动重新加载所有更改的代码? 在每个行在shell中执行之前,或者在特别请求它时失败。 我正在使用IPython和SciPy进行大量的探索性编程,每当我更改它时,必须手动重新加载每个模块是非常痛苦的。
对于IPython版本3.1,4.x和5.x.
1 2 | %load_ext autoreload %autoreload 2 |
然后默认情况下会自动重新加载您的模块。这是文档:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | 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. |
有一个技巧:当你在使用
1 2 3 | import autoreload ?autoreload # Then you get all the above |
如上所述,您需要
可能有必要先生成一个:
1 | ipython profile create |
然后在
1 2 3 | c.InteractiveShellApp.exec_lines = [] c.InteractiveShellApp.exec_lines.append('%load_ext autoreload') c.InteractiveShellApp.exec_lines.append('%autoreload 2') |
除了需要利用
1 | c.InteractiveShellApp.exec_lines.append('print"Warning: disable autoreload in ipython_config.py to improve performance." ') |
编辑:以上版本适用于版本0.12.1和0.13
修订 - 请参阅下面的Andrew_1510答案,因为IPython已经更新。
...
有点难以弄清楚如何从尘土飞扬的错误报告中找到答案,但是:
它现在随附IPython!
1 2 3 4 5 | import ipy_autoreload %autoreload 2 %aimport your_mod # %autoreload? for help |
...然后每当你打电话给
如果你使用下面的行将ipython_config.py添加到?/ .ipython / profile_default目录中,那么将在ipython启动时加载自动加载功能(在2.0.0上测试):
1 2 3 4 5 6 | 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') |
您可以使用:
1 2 3 | import ipy_autoreload %autoreload 2 %aimport your_mod |
有一个扩展,但我没有使用经验:
http://ipython.scipy.org/ipython/ipython/attachment/ticket/154/ipy_autoreload.py