如何检查你是否在Jupyter笔记本电脑中

时间:2017-05-21 18:39:31

标签: python pandas jupyter-notebook jupyter

我正在创建一个python模块,其中包含一个显示pandas DataFrame(my_df)的函数。

如果用户将模块导入Jupyter笔记本,我想提供"漂亮"使用类似以下内容格式化DataFrame:

from IPython.display import display, HTML
display(my_df)

如果用户不在Jupyter笔记本中,我想显示DataFrame的文本格式:

print(my_df)

如何检查代码是否从Jupyter笔记本运行?或者,如何从命令行以文本形式显示DataFrame,如果将HTML表单导入Jupyter笔记本,则显示HTML表单?

from IPython.display import display, HTML

def my_func(my_df):
    if [... code to check for Jupyter notebook here ...]:
        display(my_df)
    else:
        print(my_df)

2 个答案:

答案 0 :(得分:9)

您无需检查代码是否从笔记本电脑运行;从命令行调用时,display()打印文本。

test.py

from IPython.display import display
import pandas as pd 

my_df = pd.DataFrame({'foo':[1,2,3],'bar':[7,8,9]})
display(my_df)

从命令行:

$ python test.py 
   bar  foo
0    7    1
1    8    2
2    9    3

来自Jupyter笔记本:

notebook printout

<强>更新
要检查您是否在交互式Ipython shell(命令行或基于浏览器)中运行,请检查get_ipython。 (改编自Ipython文档)

修改后的test.py

from IPython.display import display, HTML
import pandas as pd 
my_df = pd.DataFrame({'foo':[1,2,3],'bar':[7,8,9]})

try:
    get_ipython
    display(my_df)
except:
    print(my_df)

这种方法将:
- 浏览器Jupyter笔记本中的漂亮印刷品 - 从命令行作为脚本运行时打印文本(例如python test.py
- 如果在Python shell中逐行运行,打印后它将不会变成交互式Ipython shell

答案 1 :(得分:1)

你应该查看os.environ。

在我的机器上,您可以在

中看到它
os.environ['_']