Jupyter Notebookで「TypeError: __init__() got an unexpected keyword argument 'io_loop'」エラーのため、コードが実行できない

$ jupyter notebook でJupyter Notebookを起動したところ、

  • コードを入力し、Ctrl + Enter を押してもコードが実行されない
  • Jupyter Notebookの右側に connected が青点滅している

ことがありました。

 
その時の対応をメモします。

 
目次

 

環境

  • Mac OSX 10.11.6
  • Anaconda 3.5.1
    • pyenvでインストール

 

調査

Jupyter Notebookを起動したターミナルを見ると、以下のエラーが繰り返し出ていました。

[I 10:04:58.541 NotebookApp] Adapting to protocol v5.1 for kernel b8c41504-eb3c-4aa2-b879-c650ba061127
[E 10:04:58.542 NotebookApp] Uncaught exception in /api/kernels/b8c41504-eb3c-4aa2-b879-c650ba061127/channels
    Traceback (most recent call last):
      File "/Users/foo/.pyenv/versions/anaconda3-5.1.0/envs/jupyterbook-env/lib/python3.6/site-packages/tornado/websocket.py", line 498, in _run_callback
        result = callback(*args, **kwargs)
      File "/Users/foo/.pyenv/versions/anaconda3-5.1.0/envs/jupyterbook-env/lib/python3.6/site-packages/notebook/services/kernels/handlers.py", line 262, in open
        super(ZMQChannelsHandler, self).open()
      File "/Users/foo/.pyenv/versions/anaconda3-5.1.0/envs/jupyterbook-env/lib/python3.6/site-packages/notebook/base/zmqhandlers.py", line 176, in open
        self.send_ping, self.ping_interval, io_loop=loop,
    TypeError: __init__() got an unexpected keyword argument 'io_loop'

 
このエラーを調べたところ、GitHubのissueに情報がありました。
Unable to start Jupyter · Issue #3202 · jupyter/notebook

For now, you'll need to downgrade to tornado 4.x. We'll be making a new notebook release soon that avoids this error.

https://github.com/jupyter/notebook/issues/3202#issuecomment-357199274

とのことです。

 
そのため、 conda list で手元のtornadoのバージョンを調べてみました。

$ conda list
# packages in environment at /Users/foo/.pyenv/versions/anaconda3-5.1.0/envs/jupyterbook-env:
#
# Name                    Version                   Build  Channel
...
tornado                   5.0.2            py36h1de35cc_0  
...

tornadoは5系でした。

 

対応

tornadoを4系の最新版にします。
https://pypi.org/project/tornado/#history

$ conda install tornado=4.5.3

 
Jupyter Notebookを起動します。

$ jupyter notebook

 
コマンドを実行してみると、問題なく動作しました。ターミナルにもエラーが出ていません。