保存会话变量会很有用,这些变量可以在稍后阶段轻松加载到内存中。
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
然后我们可以通过以下方式恢复会话:
% 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
有关"会话日志记录和还原"的更多信息,请参阅文档。
请注意,这仅存储 IPython 运行的命令。它不会保存IPython 会话的状态。 还原会话需要重新执行命令。
如果将 PYTHONSTARTUP 环境变量设置为指向名为 startup.py
的文件:
PYTHONSTARTUP=/path/to/startup.py
然后将以下内容放入/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")
则 IPython 将在您启动交互式会话时自动调用 %logstart。
寻找类似的东西,我遇到了save_ipython_variables:
save-ipython-variables
让你...保存您的全球IPython 变量轻松到磁盘,并将它们加载回全局 当您再次需要它们时,即使在全新的 IPython 中也是如此 会期。
我还没有太多机会使用它,但看起来很有希望。
我还没有尝试过这个,但从 AE Drew 的回答开始,我找到了一个可能的替代方案。看起来 IPython 有一个内置的魔术命令,可以执行此操作,称为 %store:
%存储魔术以实现轻量级持久性。将变量、别名和宏存储在 IPython 的数据库中。要在启动时自动恢复存储的变量,请将以下内容添加到ipython_config.py文件中:
c.StoreMagic.autorestore = True
还有一个神奇的命令,history
,可以用来编写用户给出的所有命令/语句。
语法 : %history -f file_name
.同样%save file_name start_line-end_line
,其中star_line是起始行号,end_line是结束行号。在选择性保存的情况下很有用。
%run
可用于执行保存文件中的命令
不是我的解决方案,但如果您使用的是 ipython,这似乎是最接近的解决方案: https://stackoverflow.com/a/28552465/4752883