You need to run %store -r
to retrieve stored variables (and aliases).
Of course, you can add this to your ipython startup script.
Question
I'm trying to get an IPython alias to persist, and according to docs the %store
magic offers this feature. But it's not working:
$ echo 'print("hello world!")' > test.py
$ ipython
In [1]: alias potato python /tmp/test.py
In [2]: potato
hello world!
In [3]: %store potato
Alias stored: potato (python /tmp/test.py)
In [4]:
Do you really want to exit ([y]/n)?
$ ipython
In [1]: potato
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-1-e561f9248d75> in <module>()
----> 1 potato
NameError: name 'potato' is not defined
What's missing?
Solution
You need to run %store -r
to retrieve stored variables (and aliases).
Of course, you can add this to your ipython startup script.
OTHER TIPS
You can also restore in a regular script, for instance if your IDE (Spyder) doesn't support the ipython_config.py
file:
from IPython import get_ipython
ipython = get_ipython()
ipython.magic("store -r")
(Put this in a file that's called in the Startup tab of Spyder's IPython configuration. This took me way too long to figure out.)
@ecatmur's solution worked for me. Thanks! I want only add an example how to add a startup script.
Just add .ipy file to .ipython/profile_default/startup/
directory with following content %store -r
:
[ikors@localhost ~]$ cat .ipython/profile_default/startup/startup_script.ipy
%store -r