为什么ipython在装饰交互时返回NameError



我被分配在Sage项目中使用@interact。课堂笔记中提供的代码是:

@interact
def show_crank(angle = slider(0,2*pi,pi/20,pi/10,label='angle')):
center = (0,0)
endpnt = (cos(angle),sin(angle))
pltcnt = point(center, size = 50)
pltend = point(endpnt, size = 50)
crank = line([center,endpnt])
(pltcnt + crank + pltend).show(xmin=-1,xmax=1,ymin=-1,ymax=1)

然而,当我尝试运行这个时,

NameError: name 'interact' is not defined

返回。我目前正在使用Jupyter实验室。使用Python3或Sage内核会导致同样的问题。

我读过很多建议我的文章,但没有任何解决方案。以下是留给后人的文章:

  • 使用iPython笔记本时出现名称错误(来自函数(
  • Ipython笔记本:导入的脚本函数的名称错误
  • 函数名称错误
  • Python名称错误:未定义名称
  • python中的NameErrors和函数
  • 确保已安装ipywidgets
  • 使用jupyter nbextension enable --py widgetsnbextension激活小部件
  • Jupyter实验室使用:jupyter labextension install @jupyter-widgets/jupyterlab-manager
  • 最后:import ipywidgets as widgetsfrom ipywidgets import *

这解决了问题的一部分,但不能解决出现的另一部分。

def show_crank(angle = slider(0,2*pi,pi/20,pi/10,label='angle')):

提示NameError:name 'slider' is not defined。使用Jupyter Lab时,正确的函数调用是FloatSlider

编辑:这要归功于威尔·科尔森。

最新更新