You need to run %store -r
to retrieve stored variables (and aliases).
Of course, you can add this to your ipython startup script.
题
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?
解决方案
You need to run %store -r
to retrieve stored variables (and aliases).
Of course, you can add this to your ipython startup script.
其他提示
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