Enregistrer la session dans IPython comme dans MATLAB?

il serait utile de sauvegarder les variables de session qui pourraient être chargées facilement dans la mémoire à un stade ultérieur.

21
demandé sur Michael Currie 2012-09-20 05:20:19

5 réponses

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

Ensuite, nous pouvons restaurer la session:

% 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

pour plus d'informations sur "Session logging and restoring" voir la documentation.

notez que cela stocke simplement le commandes dirigé par IPython. Il n'enregistre pas le état de la IPython session. Restaurer la session nécessite la ré-exécution de commande.


Si vous définissez PYTHONSTARTUP variable d'environnement pour pointer vers un fichier appelé, disons, startup.py:

PYTHONSTARTUP=/path/to/startup.py

alors mettez ce qui suit dans /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")

alors IPython appellera %logstart automatiquement chaque fois que vous démarrez une session interactive.

12
répondu unutbu 2018-01-06 19:08:06

A la recherche de quelque chose de semblable je suis tombé sur save_ipython_variables:

save-ipython-variables vous permet de ... enregistrer vos IPython variables à disque facilement, et les charger de nouveau dans le global namespace lorsque vous en avez besoin à nouveau, même dans un tout nouveau IPython session.

je n'ai pas eu beaucoup de chance de l'utiliser encore, mais semble prometteur.

3
répondu A.E. Drew 2013-09-01 20:35:13

Je n'ai pas encore essayé, mais à partir de la réponse D'AE Drew, j'ai trouvé une alternative possible. On dirait Qu'IPython a une commande magique intégrée qui fait ceci appelé %magasin:

%stocker la magie pour la persistance légère. Stocke les variables, les Alias et les macros dans la base de données D'IPython. Pour restaurer automatiquement les variables stockées au démarrage, ajoutez ceci à votre ipython_config.py fichier:

c.StoreMagic.autorestore = True
1
répondu Navaneethan Santhanam 2015-07-20 10:45:28

Il y a aussi une magie de commande, history, qui peut être utilisé pour écrire toutes les commandes/les informations fournies par l'utilisateur.

Syntaxe : %history -f file_name. Aussi %save file_name start_line-end_line, où star_line est le numéro de ligne de départ et end_line est le numéro de ligne de fin. Utile en cas d'sélective enregistrer.

%run peut être utilisé pour exécuter les commandes dans le fichier enregistré

1
répondu Harshit Garg 2017-03-20 12:01:00

ce n'est Pas ma solution, mais ce qui semble être le plus proche de la solution, si vous utilisez ipython: https://stackoverflow.com/a/28552465/4752883

0
répondu alpha_989 2018-01-06 18:00:41