DISTRICT 37

なにか

Jupyter notebookを5.7にアップグレードしたら起動しない

ライブラリをアップグレードするとこういうのが出るからうかつにできない。でもやってしまったからには後の祭りなので、解決しなければならない。ほかのライブラリにも何か出てるんだろうなぁ、とため息がでる。

出たエラー

2月にもなったし、心機一転ライブラリをアップグレードしてさぁJupyterで遊ぶかと意気込んでいたところ、エラーメッセージが飛んできて終了した。

ちなみにアップグレードしたnotebookは5.7となる

$ jupyter notebook
(中略)
  File "/home/user/.pyenv/versions/3.6.6/lib/python3.6/socket.py", line 745, in getaddrinfo
    for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
socket.gaierror: [Errno -2] Name or service not known

萎えるぜ。

という事で対象のsocket.pyを調べてみると、どうやらホスト関連の設定がまずいのではないかと思い至り以前に設定したコンフィグファイルを確認することにした。

dragstar.hatenablog.com

この中でipadressを指定する部分が、設定するつもりのものと、実際のファイルの内容が違っていた。

・ip指定

コンフィグファイルから「c.NotebookApp.ip」という文字列を探す。jupyterに設定できる項目はコメントアウトされているので、これを有効にするだけでいいようになっている。それでip指定は以下のように変更

c.NotebookApp.ip = '*'

Jupyter Notebookの設定をする - DISTRICT 37

としたつもりだが、実際にはこのようにアスタリスクが抜けていた

 c.NotebookApp.ip = ''

アップデートのタイミングで書き換わったのか、それとも元々こうだったのかは今となっては不明だが、とりあえずこのあたりを戻して起動してみたが、やはり同じエラーが出て終了する。という事で試行錯誤の旅に出た。

解決編

結果このあたりの設定を変えるだけで解決はできた。

c.NotebookApp.ip = '0.0.0.0'

これに至るまで下記の方法も試してみた

c.NotebookApp.ip = 'localhost'

実はこれでもjupyterがちゃんと起動はした。だが、ubuntu on VMでホスト側のブラウザからはjupyterにつながらなかった。これでは意味が無いという事で解決編の0.0.0.0の指定に至る。

いやはやアップグレードは怖いですね。急に無くなる関数とかあるし、関連ライブラリが変わっててどうにもできなくなることもあるし。