为什么 ipython 在装饰交互时返回 NameError?
Why is ipython returning NameError while decorating interact?
我被指派在 Sage 项目中使用 @interact
。 class 注释中提供的代码是:
@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 实验室。使用 Python 3 或 Sage 内核会导致同样的问题。
我已经阅读了向我建议的文章,但我没有想到任何解决方案。以下是留给后人的文章:
- NameError (from a function) while using iPython Notebook
- Ipython notebook : Name error for Imported script function
- Python NameError: name is not defined
- 确保
ipywidgets
已安装。
- 激活小部件:
jupyter nbextension enable --py widgetsnbextension
- 对于 Jupyter Lab 使用:
jupyter labextension install @jupyter-widgets/jupyterlab-manager
- 最后:
import ipywidgets as widgets
和
from 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。
我被指派在 Sage 项目中使用 @interact
。 class 注释中提供的代码是:
@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 实验室。使用 Python 3 或 Sage 内核会导致同样的问题。
我已经阅读了向我建议的文章,但我没有想到任何解决方案。以下是留给后人的文章:
- NameError (from a function) while using iPython Notebook
- Ipython notebook : Name error for Imported script function
- Python NameError: name is not defined
- 确保
ipywidgets
已安装。 - 激活小部件:
jupyter nbextension enable --py widgetsnbextension
- 对于 Jupyter Lab 使用:
jupyter labextension install @jupyter-widgets/jupyterlab-manager
- 最后:
import ipywidgets as widgets
和from 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。