2015-12-04 35 views
1

我希望我的函数在从IPython笔记本调用时执行一件事,如果从控制台或库代码中调用该函数,则需要执行另一件事。特别是我在做与所需的以下行为的进度条:确定我们是否在IPython笔记本会话中

  • 笔记本:立即返回一个widget
  • 控制台:Block和转储信息sys.stdout

有一个标志我可以检查以确定用户是否从笔记本或其他方式调用我的功能?

+0

第二个答案[这个问题](http://stackoverflow.com/questions/15411967/how-can-i-check-if-code-is-executed-in-the-ipython-notebook)服务你的目的? – DSM

回答

6

不能检测到前端是笔记本完美的精度,因为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 

由于笔记本比其他前端更加的流行,这表明前端是可能笔记本电脑,但不确凿。所以你想确保有更多原始前端的出路。