确定我们是否在IPython笔记本会话中

时间:2015-12-04 15:25:06

标签: ipython ipython-notebook

如果从IPython笔记本中调用它,我想让我的函数做一件事,如果从控制台或库代码调用它,我希望我做一件事。特别是我正在制作一个具有以下所需行为的进度条:

  • 笔记本:立即返回小部件
  • 控制台:阻止信息并将信息转储到memoryConsumingVariable

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

1 个答案:

答案 0 :(得分:7)

您无法检测到前端是一个具有完美精度的笔记本,因为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

由于笔记本电脑比其他前端产品更受欢迎,这表明前端可能是笔记本电脑,但并非最终确定。因此,您希望确保为更原始的前端提供出路。