Reputation: 9828
It would be useful to save the session variables which could be loaded easily into memory at a later stage.
Upvotes: 24
Views: 10395
Reputation: 879411
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
Then we can restore the session with:
% 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
For more on "Session logging and restoring" see the docs.
Note that this merely stores the commands run by IPython. It does not save the state of the IPython session. Restoring the session requires re-execution of the commands.
If you set the PYTHONSTARTUP environment variable to point at a file called, say, startup.py
:
PYTHONSTARTUP=/path/to/startup.py
then put the following in /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")
then IPython will call %logstart automatically whenever you start an interactive session.
Upvotes: 13
Reputation: 5350
Not my solution, but this seems to be the closest solution, if you are using ipython: https://stackoverflow.com/a/28552465/4752883
Upvotes: 0
Reputation: 2259
There is also a magic command, history
, that can be used to write all the commands/statements given by user.
Syntax : %history -f file_name
.
Also %save file_name start_line-end_line
, where star_line is the starting line number and end_line is ending line number. Useful in case of selective save.
%run
can be used to execute the commands in the saved file
Upvotes: 1
Reputation: 1837
I haven't tried this yet, but starting from AE Drew's answer, I found a possible alternative. Looks like IPython has a built in magic command that does this called %store:
%store magic for lightweight persistence. Stores variables, aliases and macros in IPython’s database. To automatically restore stored variables at startup, add this to your ipython_config.py file:
c.StoreMagic.autorestore = True
Upvotes: 1
Reputation: 2137
Looking for something similar I came across save_ipython_variables:
save-ipython-variables
lets you ... save your global IPython variables to disk easily, and load them back into the global namespace when you need them again, even in a whole new IPython session.
I haven't had much chance to use it yet, but looks promising.
Upvotes: 4