最新のJupyter Notebookとnbextensionsの組み合わせがうまく動かない

現在、1週間前の2020/12/23にJupyter Notebookがバージョン6.1.6にアップデートされたのですが、それに伴い拡張機能nbextensions(0.5.1)が使えなくなっているようです。さらに、単純にJupyter Notebookのバージョンを6.1.5に落としても、nbextensionsは使えるようになりますが、オートコンプリート(自動補完)の拡張機能Hinterlandが使えません。これの私の場合の解決策を残しておきます。

環境

備考OSWindows10
conda4.9.2Anaconda Promptでconda -VPython3.9.1

問題の再現

Anaconda Promptで次のよう新しい環境nbex_testを作って、jupyterとnbextensionsをインストールしてみます。

(base) $ conda create -n nbex_test
(base) $ conda activate nbex_test
(nbex_test) $ conda install jupyter
(nbex_test) $ conda install -c conda-forge jupyter_contrib_nbextensions

この状態で、スタートメニューのC:\Users\ユーザー名\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Anaconda3 (64-bit)にjupyter notebook (nbex_test)のショートカットが作られます。しかしこのショートカットからjupyter notebookを立ち上げてみると、下図のようにNbextensionsのタブが現れません。

image.png

解決策

Jupyter Notebookのバージョンを6.1.5に下げるとうまくいきました。Anaconda Promptで下のように、バージョンを指定してインストールし直すことで、Jupyter Notebookのバージョンを6.1.5に下げられます。

(nbex_test) $ conda install notebook==6.1.5

無事、下の図のようにnbextensionsのタブが現れました。これでオートコンプリート以外の拡張機能が使えるようになりました。

image.png

オートコンプリートが使えない

しかし、これだけだとオートコンプリートの拡張機能だけ使えません。nbextensionsのタブからHinterlandをオンにすれば、下の図のようにimpまで入力した時点でimportとサジェストしてくれます。Pythonにもとからある構文だけでなく、後からインストールしているモジュールに合わせてオートコンプリート機能が働いてくれます。が、これが使えません。

image.png

解決策

JupyterについてくるオートコンプリートのPythonモジュールjediのバージョンを下げてるとうまくいきました。現在インストールされていたjediのバージョンが0.18.0だったので、それを0.17.2に下げました。

(nbex_test ) $ conda install jedi==0.17.2

感想

バージョンを落とせば使えるようになるだろうことは解っていましたが、どのモジュールをどのバージョンに落とせばいいのかわからないので困りますね…。というかAnacondaって依存関係をよしなに解決してくれるのがウリなのでは?なんにせよこれ以上これに苦しむ人が増えないことを願います。(私は半日食われました)

广告
将在 10 秒后关闭
bannerAds