web-dev-qa-db-ja.com

Jupyterノートブックを使用しているかどうかを確認する方法

pythonモジュールを作成して、pandas DataFrame(my_df)。

ユーザーがモジュールをJupyterノートブックにインポートする場合、次のようなものを使用して、DataFrameの「きれいな」フォーマットを提供したいと思います。

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

ユーザーがJupyterノートブックを使用していない場合は、DataFrameのテキスト形式を表示したいと思います。

print(my_df)

コードがJupyterノートブックから実行されているかどうかを確認するにはどうすればよいですか?または、コマンドラインからテキスト形式でDataFrameを表示するのに対して、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)
15
mgoldwasser

コードがノートブックから実行されているかどうかを確認する必要はありません。 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から:

notebook printout

[〜#〜]更新[〜#〜]
インタラクティブなIpythonシェル(コマンドラインまたはブラウザーベース)内で実行しているかどうかを確認するには、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シェルで1行ずつ実行すると、印刷後にインタラクティブなIpythonシェルになりません

9
andrew_reece

Os.environを確認する必要があります。

私のマシンでは、

os.environ['_']
1
Amit Wolfenfeld