如何通过日志记录恢复 iPython 0.13.2 会话

n8h*_*rie 5 python logging ipython

我最近更频繁地使用 iPython (0.13.2),并且日志记录似乎是一个很棒的功能——如果我能让它正常工作的话。

目前,我可以通过 %magic 命令启动并指定日志文件ipython --logfile ~/path/fake.log,甚至可以在 iPython 会话的中间使用 %magic 命令%logstart ~/path/fake.log

但是,我似乎无法从日志文件恢复会话,这似乎在一定程度上违背了目的。我已经搜索过 Google 和 SO,但是 SO 或文档中推荐的解决方案似乎都不能正常工作。

我努力了:

  • 来自重击
    • ipython -log ~/path/fake.log来源,结果[TerminalIPythonApp] Unrecognized flag: '-log':)
    • ipython -logplay ~/path/fake.log来源和许多其他人,结果[TerminalIPythonApp] Unrecognized flag: '-logplay':)
    • ipython --logfile=~/path/fake.log,结果:新日志开始,上一个会话的变量未定义)
  • 来自 iPython
    • %logstart ~/path/fake.log append,结果:旧日志继续但未加载,上一个会话中的变量未定义)

两个部分工作(因为它们尝试导入日志文件)但似乎不用于此目的是:

  • 来自bash:(ipython -i ~/path/fake.log结果:如果会话导入和工作中没有错误。如果有任何错误,则不会导入并且变量仍然不可用。日志记录不会恢复。)。
  • 来自 ipython:(%run ~/path/fake.log没有来源,只是猜测和尝试。结果:与上面相同。如果没有错误并且变量为 GTG,则运行文件。如果有错误,则不起作用。不恢复日志记录。)

iPython 0.13.2 中是否有任何方法可以有效地“从上次中断的地方开始”恢复会话?感谢您的任何帮助,您可以提供。

nom*_*-ir 5

所有这些保存/恢复会话的工作方式都是将交互保存为 py 文件,然后在恢复期间尝试运行 py 文件。如果发生像未定义变量这样的错误,则会提示 python 错误并停止恢复,但它会恢复存储到错误条件的值。

为了避免存储错误条件,请使用所选答案中的建议:如何保存 Python 交互式会话?:

save  my_session_name   1-4 6  9
Run Code Online (Sandbox Code Playgroud)

我的会话将获取 In[1] 到 In[4] 中的命令,并跳过 In[5]、保存 In[6]、跳过 In[7]、In[8] 并保存 In[9]。这样您就可以避免令人反感的互动。

稍后恢复会话:

%run my_session_name.py
Run Code Online (Sandbox Code Playgroud)