過去の日記

2017-02-24 [長年日記]

Jupyter Notebookで実行されているのかチェックしたい [Python]

理由はtqdmのimport。いろいろと試したが難しかった。
こんな風にしてみた。

try:
    # noinspection PyUnresolvedReferences
    if get_ipython().__class__.__name__ == 'ZMQInteractiveShell':
        from tqdm import tnrange as trange
        from tqdm import tqdm_notebook as tqdm
    else:
        raise RuntimeError
except (NameError, RuntimeError):
    from tqdm import trange
    from tqdm import tqdm

WebのNotebookではJavaScript利用のウィジェット、それ以外ではコンソール。


あるいは、

try:
    # noinspection PyUnresolvedReferences
    if get_ipython().__class__.__name__ == 'ZMQInteractiveShell':
        from tqdm import tnrange as trange
        from tqdm import tqdm_notebook as tqdm
    else:
        from tqdm import trange
        from tqdm import tqdm
except (NameError, RuntimeError):
        trange = range
        tqdm = lambda x: x

として、ipython hoge.pyの時だけプログレスバーありにしたり。(Atom の Atom Runner みたいな、tqdm が効かない場合にオミットできる)


noinspection は PyCharm用の警告抑止。
QtConsoleは誤認識するので使わないでね。