用途
私はPythonの独自モジュールを作る際に、Jupyter上でコーディングして、出来上がったら"Executable Script"としExportして使っている。
こういうやり方をしている時に、Jupyter上で作成時には、確認やデバッグ用のコードを書いたセルを含む。
これを、Export前に消す、あるいはif True:
と書いておいて、Export前にif False:
に書き換えるなどとしていたが、それなりに面倒だ。
その解決方法を確認したので、以下に示す。
判定用フラグ
先頭の方のスクリプトに以下を書き、フラグOnJupyter
を設定する。
import sys
OnJupyter = __name__ == '__main__' and "ipykernel" in sys.modules
このフラグは、Jupyter上で直接実行されているノートブック上のコードでのみTrue
となる。作成したモジュールをJupyter上でimportしても、そのモジュール上では(__name__
が__main__
ではないので)False
となる。
デバッグ用セル
デバッグ用のセルは、以下の例の様に先頭でフラグをチェックするように書けば良い。
if OnJupyer:
print("This is a debug code")