諸事情で Mac から Windows に回帰し (2 回目)、WSL で Mac と同じように jupyter notebook を実行したところ、ブラウザで自動起動しない事象に遭遇したので、その対応方法を紹介します。
改めて紹介するほどのものでもないかもしれませんが、エラーメッセージでググっても日本語の情報が見つからなかったので、ここにさらしておきます。

動作確認した環境

    • Windows 10 x64, Version 1909

 

    • Ubuntu 18.04 LTS on WSL1

 

    • Python 3.6.9

 

    Jupyter Notebook 6.0.3

事象

pip install で jupyter をインストール後、jupyter notebook を実行すると、以下のようなエラーが表示されブラウザで自動起動しません。

$ jupyter notebook
[I 01:39:20.094 NotebookApp] Serving notebooks from local directory: /mnt/c/workspace
[I 01:39:20.094 NotebookApp] The Jupyter Notebook is running at:
[I 01:39:20.094 NotebookApp] http://localhost:8888/?token=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
[I 01:39:20.095 NotebookApp]  or http://127.0.0.1:8888/?token=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
[I 01:39:20.095 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
[C 01:39:20.116 NotebookApp]

    To access the notebook, open this file in a browser:
        file:///home/wsluser/.local/share/jupyter/runtime/nbserver-xxxx-open.html
    Or copy and paste one of these URLs:
        http://localhost:8888/?token=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
     or http://127.0.0.1:8888/?token=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Start : This command cannot be run due to the error: The system cannot find the file specified.
At line:1 char:1
+ Start "file:///home/wsluser/.local/share/jupyter/runtime/nbserver-xx ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [Start-Process], InvalidOperationException
    + FullyQualifiedErrorId : InvalidOperationException,Microsoft.PowerShell.Commands.StartProcessCommand

ブラウザ (Windows) 側から WSL 上の nbserver-xxxx-open.html のパスを参照できないために発生するようですが、http://localhost:8888/?token=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx の URL に飛ぶと起動します。

対応方法 #1

–NotebookApp.use_redirect_file=False を指定して実行します。

$ jupyter notebook --NotebookApp.use_redirect_file=False

毎回オプションを指定するのは面倒なので、適当に alias を設定して実行します。

$ echo "alias jn='jupyter notebook --NotebookApp.use_redirect_file=False'" >> ~/.bashrc
$ source ~/.bashrc
$ jn

対応方法 #2

–generate-config を指定して実行し、生成された config ファイル内で c.NotebookApp.use_redirect_file = False を設定します。その後、オプションなしで実行します。

// config を生成
$ jupyter notebook --generate-config
Writing default config to: /home/wsluser/.jupyter/jupyter_notebook_config.py

// デフォルトの設定を確認
$ grep use_redirect_file ~/.jupyter/jupyter_notebook_config.py
#c.NotebookApp.use_redirect_file = True

// コメントアウトを外し、False に変更
$ sed -i -e 's/#c.NotebookApp.use_redirect_file = True/c.NotebookApp.use_redirect_file = False/g' ~/.jupyter/jupyter_notebook_config.py

// 変更後の設定を確認
$ grep use_redirect_file ~/.jupyter/jupyter_notebook_config.py
c.NotebookApp.use_redirect_file = False

// オプションなしで実行
$ jupyter notebook

参考

    Launching notebook to browser on WSL · Issue #4594 · jupyter/notebook
广告
将在 10 秒后关闭
bannerAds