はじめに
Jupyter Notebookは、そのままでは、タイプしても候補が出ない(自動補完しない)為、エディターとしては使いにくい印象があります。
ここでは、Jupyter Notebookに自動補完(入力候補)機能を追加する為に、Anacondaを前提として、よく使われるnbextensionsをインストールする方法を説明します。
Anacondaの場合、「『pipは使うな』と書いてある、でも、『pipでインストールする記事しかない』」、ことが多く、未知のパッケージはインストールが怖い、というのが正直な所ではないでしょうか。
正確を期すため、英語のnbextenstionsの公式サイトを見ながら、実際にやってみました。
当該ページの日本語訳も、筆者が行いましたので、参考までに載せておきます。
【nbextenstions(英語)】
https://jupyter-contrib-nbextensions.readthedocs.io/en/latest/install.html
前提条件
-
- Anacondaがインストールされている
- AnacondaからJupyter Notebookをインストールしている
尚、筆者の場合、バージョンはPython3.7.6 / Anaconda 4.10.1 / jupyter-notebook 6.3.0 で、Windows10です。
バージョンはアナコンダ・プロンプトで それぞれ
python –version、conda -V、jupyter-notebook –version
とタイプして確認できます。
内容
-
- 1. Anacondaは原則condaを使う。pipは可能な限り使わない。
2. nbextensionsのインストール方法
2.1 conda-forgeから jupyter_contrib_nbextensions をインストール
2.2 Javascriptとcssのインストール
2.3 nbextensionsの有効化
3. nbextensionsの公式ページの抄訳
4. 参考ページ
5. 変更履歴
1. Anacondaは原則condaを使う。pipは可能な限り使わない。
パッケージをインストールする場合、よく見るコマンドが pip install です。しかし、よく言われるように、Anaconda環境では、可能な限りpip installは避けるべきです。
詳しくは、以下のリンクを参照してください。(※Python公式サイトではありません)
https://www.python.jp/install/anaconda/pip_and_conda.html
ですから、Anaconda環境では、pip ではなく、conda コマンドを使うようにしてください。
【注意: リンク先運営者のコメント】
Pythonの公式サイトではなく、Pythonを開発する Python Software Foundation とも無関係です。
(中略)
当サイトは、もともと Pythonドキュメント翻訳プロジェクト が翻訳した日本語版Pythonドキュメントを公開するために運用していましたが、翻訳ドキュメントが python.org 本家で公開されることになり、現在は公開しておりません。
2. nbextensionsのインストール方法
この先、Anaconda環境(つまり、コマンドはcondaでインストールする。pipは使わない。)点に注意してください。
2.1 conda-forgeからjupyter_contrib_nbextensionsをインストール
Anaconda Prompt(アナコンダ・プロンプト)で以下を入力し、Enter。
conda install -c conda-forge jupyter_contrib_nbextensions
最後に[y/n]ときいてくるので、yを入力しEnter。完了すると、doneと表示される。
(”conda-forge”は、condaのdefaultsにはない、パッケージが集積されたコミュニティです。)
注意:
DOSのコマンドプロンプトではありません。Anacondaをインストールすると、DOSと似たようなアイコンのAnaconda Promptがインストールされます。Anaconda Promptを起動すると、(base)と各行のはじめに表示されるはずです。(base)と出ていなければ、DOSを開けているのではないでしょうか?
jupyter-nbextensions-configuratorのインストールは必要か?
自分でインストールする必要ありません。これは、後で日本語訳の中にあるように、jupyter-contrib-nbextensionsをインストールすれば、自動でインストールされます。仮に、インストールをconda installで試みても、「既にインストール済み」と返してくるだけです。
2.2 Javascriptとcssのインストール
同じく、Anaconda Prompt(アナコンダ・プロンプト)で以下を入力し、Enter。
jupyter contrib nbextension install --user
2.3 nbextensionsの有効化
Jupyter Notebookを起動すると、新しくNbextensionsというタブが表れます。
左上のチェックボックスのチェックを外します。
(全てのチェックボックスがグレーアウトされているのは、これは、今の時点では、全てが無効になっているからです。)
尚、チェックボックスの英語は、以下のように言っています。
英語:disable configuration for nbextensions without explicit compatibility (they may break your notebook environment, but can be useful to show for nbextension development)
邦訳:明確な互換性のないnbexntensionsの(各機能の)設定を無効にする。(notebookの環境を破壊するかもしれないが、nbextensionの効果を示すには有効である。)
筆者の解釈:
海外サイトも調べましたが、免責と思われます。「nbextensionsの機能を同時に使う(複数チェックする)と、機能がうまく動かないかもれないし、それはnotebookの環境をおかしくするかもしれない。けれど、nbextensionsの便利な機能を利用できる。」ということだと思います。
しかし、チェックを外さない限り、機能を利用できません。よくあるパターンですよね。
3. nbextensionsの公式ページの抄訳
以下、英語のnbextensionsの公式ページの参考日本語訳です。一部省略しています。[*]マークのある項目は全て以下のnbextensionsのサイトの日本語訳です。
注意:公益性が高いと判断し、筆者が勝手に翻訳したもので、公式なものではありません。自動翻訳も一切使用していません。
[*] jupyter_contrib_nbextensionsをインストールする
jupyter_contrib_nbextensionsをインストールするには、3つのステップが必要です。まず、Python pipパッケージのインストールが必要です。次に、notebook extensionsをJupyterのデータ・ディレクトリにコピーします。最後に、notebook extensionsを有効にします。有効化は、Jupyterのコマンドを使うか、より便利な方法としてjupyter_nbextensions_configuratorを使う方法があります。
[*] 1. pyhonパッケージをインストールする
PIP
nbextensionsはpyhonパッケージとして提供されます。インストールは、pipまたはsetup.pyスクリプトを実行する、通常の方法で行います。PyPiからインストールする場合は、シンプルに
pip install jupyter_contrib_nbextensions
とタイプします。あるいは、マスターブランチから直接インストールすることもできます。
pip install https://github.com/ipython-contrib/jupyter_contrib_nbextensions/tarball/master
インストールには、–upgrade flagや -eなどのpipの通常のオプションが指定可能です。
Conda
“notebook extensions”と”jupyter_nbextensions_configurator”のcondaパッケージは、conda-forgeから利用可能です。以下で、両方をインストールできます※2。
conda install -c conda-forge jupyter_contrib_nbextensions
これを実行すると、JavascriptとCSSファイルが自動でインストールされるので(jupyter contrib nbextension install –sys-prefixを使います)、以下のインストール手順の第2ステップは省略できます。
※2 : (筆者追記) “jupyter_contrib_nbextensions”をすれば、”jupyter_nbextensions_configurator”が自動でインストールされるので、後者を自らインストールする必要はありません。
[*]リポジトリをCloneしてインストール
リポジトリからcloneしてインストールすることも可能で、開発には有効な方法です。以下でcloneする事が可能で、
git clone https://github.com/ipython-contrib/jupyter_contrib_nbextensions.git
次に、pipを実行します。
pip install -e jupyter_contrib_nbextensions
[*] 2. javascriptとcssファイルをインストールする
このステップで、nbextensionsのjavascriptとcssファイルをjupyterのディレクトリにコピーし、jupyterのconfigファイルを編集します。なお、jupyterのサブコマンドが用意されています。
jupyter contrib nbextension install --user
コマンドは次の2つを実行します。nbextensionファイルをインストールし、nbconvertのconfigファイルを編集します。最初の部分は、本質的にはnotebookが提供するjupyter nbextension installのラッパーであり、関連するjavascriptとcssファイルを適切なjupyterのディレクトリにコピーします。2番目の部分は、configファイルである、jupyter_nbconvert_config.jsonと jupyter_notebook_config.jsonを以下に述べるオプションで編集します。コマンドの大部分は、jupyterが提供するものと全く同じコマンドです。オプションには以下を含みます。
–user ユーザーのjupyterのホームディレクトリにインストールします。
(他のオプションは省略)
uninstallコマンドも用意され、全てのnbextensionのファイルをjupyterのディレクトリから削除します。
[*] 3. 機能の有効化、無効化
nbextensionを使う為には、更に、機能を有効化する必要があります。これは、notebookインターフェースがロードできるようにするということです。その為に、Jupyterのサブコマンドが使用可能です。
jupyter nbextension enable <nbextension require path>
例えば、
jupyter nbextension enable codefolding/main
無効化するには、以下を使います。
jupyter nbextension disable <nbextension require path>
他の方法として、そしてより便利な方法として、”jupyter_nbextensions_configurator”を使う事ができます。これは、このリポジトリ(筆者追記:jupyter_contrib_nbextensionsのこと)に付属してインストールされます。これにより、(筆者追記:コマンドで)オプションで設定するのと同じように、個々のnbextensionsの機能を有効化、無効化できます。nbextensionsタブがnotebookのページに表示され、そこからチェックボックスにより有効化、無効化が可能となります。さらに、それぞれの機能についての短い説明が表示され、設定のオプションも表示されます。
[*] 4. 更に複雑なセットアップ
殆どのnbextensionsの機能はjupyterhubで動くはずです。しかし、jupyterlabでは動きません。複雑あるはカスタマイズされたインストールをする場合は、Jupyter homepageにあるドキュメントを参照してください。
installing Jupyter もご参照ください。
4. 参考ページ
-
- 実践で使うPythonの技術が掲載されている弊社のページです。書籍のように構成されています。
-
- https://shilabo.com/python/web_self/
-
- pipとcondaの関係:
-
- https://www.python.jp/install/anaconda/pip_and_conda.html
-
- nbextensionsのインストール :
-
- https://www.soudegesu.com/post/python/jupyter-autocomplete/
-
- https://qiita.com/simonritchie/items/d7dccb798f0b9c8b1ec5
- https://qiita.com/SaitoTsutomu/items/1326e05eb992a8aa849d
5. 変更履歴
- 2021/10/14 : 設定後のJupyter Notobookの図を分かりやすいものに変更。