計算物理屋の研究備忘録

Linux, Cygwin, Mac, zsh, emacs等の使い方、設定などのメモ

Jediを使ってPythonのコード補完

いろいろと試行錯誤しながらプログラムを書くときはたぶんipython notebookを使うけど、EmacsユーザーとしてはEmacsでもPythonコードを書きやすくしておきたい。

Jedi.el

auto-completeを利用したPython書くときの便利なやつ。補完だけじゃなくて、関数の使い方とかもポップアップしてくれる。

github.com

詳しくは上のリンク先のDocumentation (dev)を見るといい。

インストー

入れるのはバージョン0.2.0系 (developmental version)。0.1.2 (released version)よりインストールが楽になっている。
developmental versionとなっているがMELPAにあるのはこのバージョンなので大丈夫。

virtualenvが必要

Emacsの前にPython側のvirtualenvが必要。pipやanacondaを使っている人はcondaを使ってインストールしておく。

$ conda install virtualenv

EmacsをランチャーからGUI起動していて、pyenvを使っている環境で1回ハマった。ランチャーから起動するとログインシェルのPATHが引き継がれないので、pyenvpythonのPATH、~/.pyenv/shims/にあるpython本体とかvirtualenvEmacsから起動できなかった。Emacsはターミナルから

$ emacs &

で起動させる。ターミナルから起動すれば、そのシェルのPATHを引き継ぐので、pyenvを使っていても問題ない。

——– 2017/06/21 追記———-
GUI起動でも、シェルのPATHをEmacsに引き継がせればOK。

シェルのPATHをEmacsに引き継がせる - 計算物理屋の研究備忘録

——– 追記終了———-

Jedi.elのインストールと設定

package.elを使ってMELPAからインストールする。依存関係で他に必要なパッケージも勝手にインストールしてくれる。

init.el

;; Standard Jedi.el setting
(add-hook 'python-mode-hook 'jedi:setup)
(setq jedi:complete-on-dot t)

と書いて、Emacsを再起動かM-x eval-bufferして上記設定を有効にする。

あとはマニュアルに書いてあるように、Emacsから

M-x jedi:install-server

とすることで、Python関係の必要なパッケージがvirtualenv環境を使ってインストールされるので楽。
このコマンドはJedi.elのアップデートがあったときに毎回行う。

Run this command (i.e., type M-x jedi:install-server RET) whenever Jedi.el shows a message to do so. It is a good idea to run this every time after you update Jedi.el to sync version of Python modules used by Jedi.el and Jedi.el itself.