Python 打印字符串时SageMathCell值错误(有时)

Python 打印字符串时SageMathCell值错误(有时),python,string,error-handling,sage,Python,String,Error Handling,Sage,当我使用指定的参数执行时,有时会正确执行,有时会出现以下错误: ValueError Traceback (most recent call last) <ipython-input-1-253427808e04> in <module>() 117 show(plot(t,title=heading,vertex_labels=False,layout='tree',figsi

当我使用指定的参数执行时,有时会正确执行,有时会出现以下错误:

ValueError                                Traceback (most recent call last)
<ipython-input-1-253427808e04> in <module>()
    117             show(plot(t,title=heading,vertex_labels=False,layout='tree',figsize=Integer(4)))
    118         else:
--> 119             print heading
    120         L = successor(L)
    121     else:

/home/sc_serv/sage/local/lib/python2.7/site-packages/ipykernel/iostream.py in write(self, string)
    315 
    316             is_child = (not self._is_master_process())
--> 317             self._buffer.write(string)
    318             if is_child:
    319                 # newlines imply flush in subprocesses

ValueError: I/O operation on closed file
ValueError回溯(最近一次调用)
在()
117显示(绘图(t,title=标题,vertex\u labels=False,layout='tree',figsize=Integer(4)))
118.其他:
-->119打印标题
120升=后继(升)
121.其他:
/home/sc_serv/sage/local/lib/python2.7/site-packages/ipykernel/iostream.py写入(self,string)
315
316是子进程=(不是自进程。\是主进程()
-->317自缓冲区写入(字符串)
318如果是儿童:
319#换行符表示子流程中的刷新
ValueError:对关闭的文件执行I/O操作

错误总是指向第119行,该行仅打印字符串。这一行出现在一个执行多次的循环中,并且发生错误的特定迭代似乎是完全随机的。有时循环几乎完成,有时仅在几次迭代后就崩溃。更奇怪的是,如果我将print_images设置为true(这会导致标题作为图形的一部分而不是简单的字符串打印),则错误永远不会发生。发生了什么?

这里有一个解决方法:不要在循环的每次迭代中打印输出,而是将整个输出存储在单个字符串中,并在执行结束时打印一次。这可以通过替换的所有实例来实现

print heading


事实证明,该问题在过去已得到修复,但由于当前ipykernel master的版本为4.3.0dev,而最新版本为4.3.1,因此问题再次出现。我已经调整了安装命令,无法再重现该问题-错误行现在已正确包装。谢谢你的报道

谢谢你抓住了问题的核心。我不可能要求一个更好的解决方案。
output = output + '\n' + heading