こっくん道場

南の島から東大に来た僕が日々思うアレコレ

Jupyterの括弧・引用符の自動補完がされないときの解決法

Pythonを使ったデータ分析のツールとしてJupyterNotebookを使っているが、括弧や引用符の入力補完(括弧を入れたら括弧閉じまで自動入力してくれる機能)がちゃんと働いてくれないって人に捧げるエントリです。

google colaboratoryでもiLect(GCIで使うツール)でも、Progateをはじめとするプログラミングサービスでも、自動入力補完に慣れてきたのでかなりやりづらさを感じていたのでいち早く解決しようと思ってひたすらググった。

「Jupyter 括弧 入力補完」って検索すると、下記のような記事が出てくる。

Python - jupyter notebookで括弧や引用符の自動補完をしたい|teratail

Python - Jupyter notebookでの括弧・引用符の自動補完|teratail

Jupyter Notebook で括弧の入力補完( autoCloseBrackets )をオフにする - Qiita

上記2つだと、anacondaの更新とか一番下のようにオフする方法は結構載っているからそれを逆にたどることを提案しているが、いずれも解決には至っていなかった。

色々調べてもよくわからなかったので、エンジニアの友人に聞いたら、「JupyterをChromeで起動してみて」とのこと。

「エンジニアでSafariをブラウザとして使ってるのはセクシーじゃないよ」という言葉と共に。

そういや、いつもchromeをブラウザとして使っているのにJupyterだけSafariで開かれるな。

ということで、軽くググると、下記のようにJupyterで使うブラウザを指定する方法に関するQiitaの記事が沢山出てきた。どうやらMacは少し面倒っぽい?

とここで、こっくんはふと閃いた。既定ブラウザをSafariからchromeに変えればそれで試合終了じゃないかと。

普段からGoogle Chromeをブラウザとして使っているので、既定ブラウザをChromeに迷わず変えてJupyterNotebookを起動!

そして、「print( 」まで打つとしっかり括弧閉じが自動補完された。

qiita.com

結論:Jupyterの入力補完がされない場合は、既定ブラウザをとりあえずSafariからChromeに変えてみる。

もちろん、Macユーザーでない場合や既に既定ブラウザをchromeにしている場合は、他の原因が考えられるので、上記のリンク等を確認してみてください。

関数等の入力補完

括弧や引用符の入力補完は解決したと仮定して、Nbextensions(Jupyterの拡張機能)を設定した上で、Hinterlandという機能を有効化すると関数とかを自動入力補完ができ生産性が向上する。著者は下記記事を参照した。

qiita.com

Anacondaをアンインストールする方法

友人のアドバイスで上記のように解決したが、それまでは自分で色々いじってたらおかしなことになっていた。具体的には、anacondaを更新してみてはという意見が書いてあったので、

conda update conda

conda update --all

とコマンドを実行したところ、うまくいかないどころかAnacondaアプリのショートカットがなぜか消えてしまった。色々試したが、アンインストールして再インストールするのが早いと結論してアンインストールの方法をググったら下記の記事が良さそうだったので採用した。手順1、2はおそらくすんなりいけるだろう。(ただし、sudoを活用する必要がある人もいると思うのでその際は慣れないと思うががんばって)

weblabo.oscasierra.net

みてもらえばわかるかと思うがこの手順の3のところで、Linuxに慣れていない人は躓くだろう。

f:id:cockndojo:20190517001306p:plain

ざっくりとした手順としては、.bash_profile中のAnacondaの部分以外の記述をコピーしてアップデートするという感じだ。

f:id:cockndojo:20190517001756p:plain

この最初の「:」以降をコピペして新しいPATHに更新すればいい。

「vi」「cat」「source」「echo」「ls」「ls -a」とかをコマンドとしては使った。

 

こういう説明って、本当に理解してないとわかりやすく伝えられないなって書きながら痛感した。アウトプットを意識したインプットを心がけようって改めて思った。

では、また。