【问题标题】:Why is ipython returning NameError while decorating interact?为什么 ipython 在装饰交互时返回 NameError?
【发布时间】:2021-07-18 19:09:54
【问题描述】:

我被分配在 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 Lab。使用 Python 3 或 Sage 内核会导致同样的问题。

我已经阅读了 SO 建议给我的文章,但我没有想到任何解决方案。以下是后人的文章:

【问题讨论】:

  • 你需要先导入interact才能使用它——你的课堂笔记真的没有提到吗?
  • @jasonharper 我也这么认为。我的教授使用 CoCalc,而不是 Jupyter Lab。我在这里找到了答案:towardsdatascience.com/…

标签: python-3.x interactive jupyter-lab nameerror sage


【解决方案1】:
  • 确保已安装ipywidgets
  • 使用以下命令激活小部件:jupyter nbextension enable --py widgetsnbextension
  • 供 Jupyter Lab 使用: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

编辑:这归功于Will Koehrsen

【讨论】:

    猜你喜欢
    • 2019-01-31
    • 2020-06-22
    • 2016-11-09
    • 1970-01-01
    • 2012-03-30
    • 1970-01-01
    • 2012-06-25
    • 1970-01-01
    • 2023-03-16
    相关资源
    最近更新 更多