【问题标题】:Determine if we're in an IPython notebook session确定我们是否在 IPython 笔记本会话中
【发布时间】:2015-12-04 15:25:06
【问题描述】:

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

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

是否有一个标志我可以检查以确定用户是否从笔记本或其他地方调用了我的函数?

【问题讨论】:

标签: ipython ipython-notebook


【解决方案1】:

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

由于 notebook 比其他前端更受欢迎,这表明前端可能是一个 notebook,但不是决定性的。所以你要确保更原始的前端有出路。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-03
    • 1970-01-01
    • 1970-01-01
    • 2017-05-03
    • 1970-01-01
    • 2015-08-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多