How to check if you are in a Jupyter notebook

醉酒当歌 提交于 2020-01-01 07:55:09

问题


I am creating a python module with a function to display a pandas DataFrame (my_df).

If the user imports the module into a Jupyter notebook, I would want to deliver "pretty" formatting for the DataFrame by using something like:

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

If the user is not in a Jupyter notebook, I would want to display the text form of the DataFrame:

print(my_df)

How can I check if the code is being run from a Jupyter notebook? Or, how can I display the DataFrame in text form from the commandline, vs display the HTML form if it is imported into a Jupyter notebook?

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)

回答1:


You don't need to check if the code is being run from a Notebook; display() prints text when called from the command line.

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)

From the command line:

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

From a Jupyter Notebook:

UPDATE
To check whether you're running inside an interactive Ipython shell (command-line or browser-based), check for get_ipython. (Adapted from the Ipython docs)

Modified 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)

This approach will:
- pretty-print in a browser Jupyter notebook
- print text when run as a script from the command line (e.g. python test.py)
- if run line-by-line in a Python shell, it will not turn into an interactive Ipython shell after printing




回答2:


You should look in os.environ.

On my machine you can see it in

os.environ['_']


来源:https://stackoverflow.com/questions/44100477/how-to-check-if-you-are-in-a-jupyter-notebook

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!