notebook library again python ipython

library - Autoreload de módulos en IPython



jupyter notebook reload library (6)

Como se mencionó anteriormente, necesita la extensión de autoreload . Si desea que se inicie automáticamente cada vez que inicie ipython , debe agregarlo al archivo de inicio ipython_config.py :

Puede ser necesario generar uno primero:

ipython profile create

Luego incluya estas líneas en ~/.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'')

Además de una advertencia opcional en caso de que necesite aprovechar el código Python compilado en archivos .pyc :

c.InteractiveShellApp.exec_lines.append(''print "Warning: disable autoreload in ipython_config.py to improve performance." '')

editar: lo anterior funciona con la versión 0.12.1 y 0.13

Esta pregunta ya tiene una respuesta aquí:

¿Hay alguna manera de que IPython recargue automáticamente todo el código modificado? O bien antes de que cada línea se ejecute en el intérprete de comandos o en su defecto cuando se solicite específicamente. Estoy haciendo una gran cantidad de programación exploratoria utilizando IPython y SciPy, y es bastante doloroso tener que volver a cargar manualmente cada módulo cada vez que lo cambio.



Para IPython versión 3.1, 4.x y 5.x

In [1]: %load_ext autoreload In [2]: %autoreload 2

Entonces su módulo será recargado automáticamente por defecto. Este es el documento:

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.

Hay un truco: cuando te olvidas de todo lo anterior cuando usas ipython , simplemente prueba:

import autoreload ?autoreload # Then you get all the above


Puedes usar:

import ipy_autoreload %autoreload 2 %aimport your_mod


REVISADO: consulte la answer de Andrew_1510 a continuación, ya que IPython se ha actualizado.

...

Fue un poco difícil averiguar cómo llegar desde un informe de error polvoriento, pero:

¡Ahora viene con IPython!

import ipy_autoreload %autoreload 2 %aimport your_mod # %autoreload? for help

... luego, cada vez que llame a your_mod.dwim() , recogerá la última versión.


si agrega ipython_config.py en ~ / .ipython / profile_default dir con las líneas siguientes, la funcionalidad de autorecarga se cargará en el inicio de ipython (probado en 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'')