首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何检查代码是否在IPython笔记本中执行?

如何检查代码是否在IPython笔记本中执行?
EN

Stack Overflow用户
提问于 2013-03-14 22:25:45
回答 14查看 46.8K关注 0票数 108

我有一些Python代码示例想要分享,如果在终端Python / IPython或IPython笔记本中执行,应该会做一些不同的事情。

如果我的Python代码在IPython笔记本上运行,我如何检查它?

EN

回答 14

Stack Overflow用户

回答已采纳

发布于 2013-03-14 22:56:29

问题是你想以不同的方式执行什么。

我们在IPython中尽了最大努力防止内核知道哪种前端是连接的,实际上你甚至可以让一个内核同时连接到许多不同的前端。即使您可以偷看一下stderr/out的类型以了解您是否在ZMQ内核中,它也不能保证您在另一端拥有什么。你甚至可以完全没有前额。

你可能应该以独立于前端的方式编写你的代码,但是如果你想显示不同的东西,你可以使用rich display system (link pinned to version 4.x of IPython)根据前端来显示不同的东西,但是前端会选择,而不是库。

票数 4
EN

Stack Overflow用户

发布于 2016-09-23 21:43:36

下面的方法满足了我的需求:

代码语言:javascript
运行
复制
get_ipython().__class__.__name__

它在终端IPython上返回'TerminalInteractiveShell',在Jupyter (笔记本和qtconsole)上返回'ZMQInteractiveShell',在常规Python解释器上失败(NameError)。在启动IPython时,默认情况下,全局名称空间中似乎提供了get_python()方法。

将其封装在一个简单的函数中:

代码语言:javascript
运行
复制
def isnotebook():
    try:
        shell = get_ipython().__class__.__name__
        if shell == 'ZMQInteractiveShell':
            return True   # Jupyter notebook or qtconsole
        elif shell == 'TerminalInteractiveShell':
            return False  # Terminal running IPython
        else:
            return False  # Other type (?)
    except NameError:
        return False      # Probably standard Python interpreter

在macOS 10.12和Ubuntu14.04.4LTS上使用Python3.5.2、Jupyter5.1.0和Jupyter4.2.1进行了测试

票数 92
EN

Stack Overflow用户

发布于 2014-07-24 23:04:57

要检查你是否在笔记本中,这可能很重要,例如在确定使用哪种进度条时,这对我很有效:

代码语言:javascript
运行
复制
def in_ipynb():
    try:
        cfg = get_ipython().config 
        if cfg['IPKernelApp']['parent_appname'] == 'ipython-notebook':
            return True
        else:
            return False
    except NameError:
        return False
票数 40
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15411967

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档