【问题标题】:How to resume iPython 0.13.2 session with logging如何通过日志记录恢复 iPython 0.13.2 会话
【发布时间】:2013-07-23 15:05:14
【问题描述】:

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

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

但是,我似乎无法从日志文件中恢复会话,这似乎部分违背了目的。我搜索了 Google 和 SO,但在 SO 或文档中推荐的解决方案似乎都不是很正确。

我试过了:

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

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

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

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

【问题讨论】:

    标签: python logging ipython


    【解决方案1】:

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

    为避免存储错误条件,请使用How to save a Python interactive session? 所选答案中的建议:

    save  my_session_name   1-4 6  9
    

    我的会话将获取 In[1] 到 In[4] 中的命令并跳过 In[5]、保存 In[6]、跳过 In[7]、In[8] 并保存 In[9]。这样可以避免冒犯性的交互。

    稍后恢复会话:

    %run my_session_name.py
    

    【讨论】:

    • 但它确实将存储的值恢复到错误条件。 - 这不是我的经验,如上所述。我刚刚重新测试以确认。如果我 %logstart 并执行(显然在单独的行上)this = 'is a test' that = 'produces an error",然后 %run 日志,this 仍然未定义。
    • 嘿,你后来找到解决这个问题的方法了吗?我现在也有这个问题@n8henrie
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-28
    • 2019-12-13
    • 2023-03-11
    • 1970-01-01
    • 2016-03-14
    • 2014-11-10
    • 1970-01-01
    相关资源
    最近更新 更多