Turtle在Jupyter笔记本电脑中运行不止一次

时间:2019-06-13 13:45:52

标签: python jupyter-notebook turtle-graphics

我正在尝试在jupyter笔记本中运行一些海龟代码。当我运行一次代码时,代码运行良好。但是,如果我再次运行代码,Python Turtle Graphics将冻结并关闭(又名python Turtle图形没有响应),并且Jupyter Notebook的内核崩溃

我试图切换笔记本电脑,重新安装jupyter并重新启动内核,但是它们都没有起作用。

这是海龟代码:

import turtle
pen = turtle.Pen()
window = turtle.Screen()
pen.color("light blue")
pen.shape("turtle")
pen.forward(100)

window.exitonclick()

这是我第二次运行代码时的错误消息。笔记本保存在C:\ Users \ fligh \ OneDrive \ Jupyter Notebooks \,文件名为“ Principles 2 Playground”:

<ipython-input-2-79042881c88e> in <module>
      1 import turtle
----> 2 pen = turtle.Pen()
      3 window = turtle.Screen()
      4 pen.color("light blue")
      5 pen.shape("turtle")

c:\users\fligh\appdata\local\programs\python\python37-32\lib\turtle.py in __init__(self, shape, undobuffersize, visible)
   3814                            shape=shape,
   3815                            undobuffersize=undobuffersize,
-> 3816                            visible=visible)
   3817 
   3818 Pen = Turtle

c:\users\fligh\appdata\local\programs\python\python37-32\lib\turtle.py in __init__(self, canvas, shape, undobuffersize, visible)
   2555         self._undobuffersize = undobuffersize
   2556         self.undobuffer = Tbuffer(undobuffersize)
-> 2557         self._update()
   2558 
   2559     def reset(self):

c:\users\fligh\appdata\local\programs\python\python37-32\lib\turtle.py in _update(self)
   2658             return
   2659         elif screen._tracing == 1:
-> 2660             self._update_data()
   2661             self._drawturtle()
   2662             screen._update()                  # TurtleScreenBase

c:\users\fligh\appdata\local\programs\python\python37-32\lib\turtle.py in _update_data(self)
   2644 
   2645     def _update_data(self):
-> 2646         self.screen._incrementudc()
   2647         if self.screen._updatecounter != 0:
   2648             return

c:\users\fligh\appdata\local\programs\python\python37-32\lib\turtle.py in _incrementudc(self)
   1290         if not TurtleScreen._RUNNING:
   1291             TurtleScreen._RUNNING = True
-> 1292             raise Terminator
   1293         if self._tracing > 0:
   1294             self._updatecounter += 1

Terminator:

有人可以帮助我吗? 谢谢

3 个答案:

答案 0 :(得分:1)

如果你想在 Jupyter 中多次运行海龟模块,请在最后尝试turtle.bye():

import turtle

bob = turtle.Turtle()
bob.forward(50)
turtle.done()

try:
    turtle.bye()
except:
    print("bye") 

(我添加了 try/except 是因为 .bye() 引发了一个终结符错误)

基于turtle.done() not working in Spyder

答案 1 :(得分:0)

这显然是Jupyter / iPython经常出现的问题

您可以安装iPyTurtle,这会很有帮助。
在此medium article

上找到

您还可以使用t[0]在单元格顶部和下面的单元格中创建包含命令的文件,然后使用%%file turtle_example.py运行它。
但这不是很好

答案 2 :(得分:0)

我也有这个问题!试试:

$ pip安装ipyturtle

$ jupyter nbextension enable --py --sys-prefix ipyturtle


在setup.py文件的第74和75行中,更改

os.path.join(此处为“ ipyturtle”,“ static”,“ extension.js”)

os.path.join(此处为'ipyturtle','static','index.js')

os.path.join(此处为“ js”,“ lib”,“ extension.js”)

os.path.join(此处为'js','lib','index.js')


$ pip install -e。

$ jupyter nbextension install --py --symlink --sys-prefix ipyturtle

$ jupyter nbextension enable --py --sys-prefix ipyturtle


应该在最后说“成功安装ipyturtle”