用途
私は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")