【问题标题】:Save session in IPython like in MATLAB?像在 MATLAB 中一样在 IPython 中保存会话?
【发布时间】:2012-09-12 08:47:38
【问题描述】:

保存会话变量会很有用,这些变量可以在以后轻松加载到内存中。

【问题讨论】:

标签: python ipython pandas


【解决方案1】:
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

有关“会话记录和恢复”的更多信息,请参阅the docs

请注意,这仅存储由 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。

【讨论】:

  • 为什么这个答案被接受了?这并没有解决保存会话中定义的所有变量和数据的问题(据我所知,没有一个干净的 Python 解决方案)。
  • 完全同意 - 虽然它很有趣,但它不是解决方案,我不认为。有人知道更多吗?我希望能够加载一个会话并从我离开的地方开始。它在其他数据分析语言/套件中很常见
  • 好吧。据我所知,如果您在定义这些变量之前就知道它,这就是解决方案。另一种方法是在启动 ipython 命令行时弄清楚如何默认运行它。
  • 这个可以在python/ipython启动时自动启动吗?那么它会非常有用
  • @alpha_989:我已经编辑了上面的答案以显示如何。
【解决方案2】:

不是我的解决方案,但这似乎是最接近的解决方案,如果您使用的是 ipython:https://stackoverflow.com/a/28552465/4752883

【讨论】:

    【解决方案3】:

    还有一个神奇的命令,history,可以用来编写用户给出的所有命令/语句。

    语法:%history -f file_name。 还有%save file_name start_line-end_line,其中star_line 是起始行号,end_line 是结束行号。在选择性保存的情况下很有用。

    %run可以用来执行保存文件中的命令

    【讨论】:

    • 如果您使用的是 ipython,则无需担心命令。每当您输入命令时,它们都会自动保存为会话。 OP 询问是否保存变量
    【解决方案4】:

    我还没有尝试过,但从 AE Drew 的回答开始,我找到了一个可能的替代方案。看起来 IPython 有一个内置的魔法命令,叫做%store

    %store 用于轻量级持久性的魔法。在 IPython 的数据库中存储变量、别名和宏。要在启动时自动恢复存储的变量,请将其添加到您的 ipython_config.py 文件中:

    c.StoreMagic.autorestore = True
    

    【讨论】:

    • 您需要调用 %store 来存储您要保存的每个变量。如果您的变量已刷新值,您需要再次调用 %store。这听起来很烦人。
    • 同意这是一种痛苦,但它仍然有用并且比没有能力这样做更好。
    【解决方案5】:

    寻找类似的东西我遇到了save_ipython_variables

    save-ipython-variables 让您...保存您的全局 IPython 轻松将变量写入磁盘,并将它们加载回全局 再次需要它们时的命名空间,即使在全新的 IPython 中 会话。

    我还没有太多机会使用它,但看起来很有希望。

    【讨论】:

    • 有人从这个包中得到data = build_data_dictionary_from_db() 行吗?
    猜你喜欢
    • 1970-01-01
    • 2013-07-15
    • 2012-11-17
    • 1970-01-01
    • 2019-05-12
    • 2019-07-15
    • 2013-10-13
    • 1970-01-01
    相关资源
    最近更新 更多