¿Guardar sesión en IPython como en MATLAB?

Sería útil guardar las variables de sesión que podrían cargarse fácilmente en la memoria en una etapa posterior.

 In [23]: %logstart /tmp/session.log Activating auto-logging. Current session state plus future input saved. Filename : /tmp/session.log Mode : backup Output logging : False Raw input log : False Timestamping : False State : active In [24]: x = 1 In [25]: %logstop In [26]: quit() Do you really want to exit ([y]/n)? y 

Luego podemos restaurar la sesión con:

 % ipython -log /tmp/session.log Activating auto-logging. Current session state plus future input saved. Filename : ipython_log.py ... In [1]: x Out[1]: 1 

Para obtener más información sobre “Registro de sesión y restauración”, consulte los documentos .

Tenga en cuenta que esto simplemente almacena los comandos ejecutados por IPython. No guarda el estado de la sesión de IPython. La restauración de la sesión requiere la re-ejecución de los comandos.


Si configura la variable de entorno PYTHONSTARTUP para que apunte a un archivo llamado, por ejemplo, startup.py :

 PYTHONSTARTUP=/path/to/startup.py 

luego ponga lo siguiente en /path/to/startup.py:

 try: # https://stackoverflow.com/a/5377051/190597 (Tom Dunham) __IPYTHON__ except NameError: pass else: # https://stackoverflow.com/a/15898875/190597 (user2261139) from IPython import get_ipython ipython = get_ipython() ipython.magic("%logstart /tmp/session.log") 

luego, IPython llamará% logstart automáticamente cuando inicie una sesión interactiva.

Buscando algo similar encontré save_ipython_variables :

save-ipython-variables permite … guardar sus variables globales de IPython en el disco fácilmente, y cargarlas nuevamente en el espacio de nombres global cuando las necesite de nuevo, incluso en una sesión de IPython completamente nueva.

No he tenido muchas oportunidades de usarlo todavía, pero parece prometedor.

No he intentado esto todavía, pero a partir de la respuesta de AE ​​Drew, encontré una posible alternativa. Parece que IPython tiene un comando mágico incorporado que hace esto llamado % store :

Tienda de magia para la persistencia ligera. Almacena variables, alias y macros en la base de datos de IPython. Para restaurar automáticamente las variables almacenadas en el inicio, agregue esto a su archivo ipython_config.py:

 c.StoreMagic.autorestre = True 

También hay un comando mágico, history , que puede usarse para escribir todos los comandos / declaraciones dados por el usuario.

Sintaxis: %history -f file_name . También %save file_name start_line-end_line , donde star_line es el número de línea inicial y end_line es el número de línea final. Útil en caso de guardar selectivamente.

%run se puede usar para ejecutar los comandos en el archivo guardado

No es mi solución, pero esta parece ser la solución más cercana, si está usando ipython: https://stackoverflow.com/a/28552465/4752883