1
我希望我的函数在从IPython笔记本调用时执行一件事,如果从控制台或库代码中调用该函数,则需要执行另一件事。特别是我在做与所需的以下行为的进度条:确定我们是否在IPython笔记本会话中
- 笔记本:立即返回一个widget
- 控制台:Block和转储信息
sys.stdout
有一个标志我可以检查以确定用户是否从笔记本或其他方式调用我的功能?
我希望我的函数在从IPython笔记本调用时执行一件事,如果从控制台或库代码中调用该函数,则需要执行另一件事。特别是我在做与所需的以下行为的进度条:确定我们是否在IPython笔记本会话中
sys.stdout
有一个标志我可以检查以确定用户是否从笔记本或其他方式调用我的功能?
不能检测到前端是笔记本完美的精度,因为IPython的内核可以有不同的功能,一个或多个不同Jupyter前端(终端控制台,qtconsole,笔记本电脑等)。你可以,但是,确定它是一个内核,而不是普通的终端IPython的:
import sys
def is_kernel():
if 'IPython' not in sys.modules:
# IPython hasn't been imported, definitely not
return False
from IPython import get_ipython
# check for `kernel` attribute on the IPython instance
return getattr(get_ipython(), 'kernel', None) is not None
由于笔记本比其他前端更加的流行,这表明前端是可能笔记本电脑,但不确凿。所以你想确保有更多原始前端的出路。
第二个答案[这个问题](http://stackoverflow.com/questions/15411967/how-can-i-check-if-code-is-executed-in-the-ipython-notebook)服务你的目的? – DSM