理科系の備忘録

Linux/Ubuntu/Mac/Emacs/Computer vision/Robotics

jediによるpythonコード補完 with Emacs on Windows

f:id:kenbell1988:20170122114754g:plain

背景

年始なのでEmacsの設定を見直すことにした。大学時代に作った環境をずっと使っていたが、あれからpackage.elによるパッケージ管理が主流となり、自分の環境が時代遅れのものとなっていた。(auto-completeよりはcompany-modeがいいとか)

pythonのコーディング環境はipythonで満足していたが、Emacsでも関数の補完やヘルプの表示がしたくなったので、パッケージをインストールした。インストールするパッケージはjedi。

jediとは

github.com

pythonの静的解析ライブラリで、コードの補完などに利用できる。色々なエディタで使うことができ、当然Emacsでも利用できる。

環境

自分はMinicondaでpythonの仮想環境を複数(py34, py35)用意している。
今回はpython35の方で環境を構築した。

インストールしているパッケージはこんな感じ。
f:id:kenbell1988:20170115152531p:plain

方法1(失敗)

Jedi.el - Python auto-completion for Emacs — Emacs Jedi 0.2.0alpha2 documentation

ここのQcuick startの通りにインストールしてみたが、

M-x jedi:install-server

を入力してもエラーが出てうまく実行できなかった。なんとかこちらでできるようにいつか再挑戦する。

方法2(成功)

以下のサイトを参考にさせてもらった。
Pythonがサクサク書ける!emacsにjediをインストールする。 - import nan-ch

まず、python3.5の仮想環境を選択。(事前に作った仮想環境)

$ source activate C:/Users/Bell/Miniconda3/envs/py35

仮想環境をアクティベートした状態で、pipで以下をインストール。

$ pip install jedi epc

最後に、~/.emacs.d/init.elに以下を追加した。

(require 'epc)
(require 'auto-complete-config)
(require 'python)

;; 補完対象とするソースコードまでのパス
(setenv "PYTHONPATH" "/usr/local/lib/python2.7/site-packages")
(require 'jedi)
(add-hook 'python-mode-hook 'jedi:setup)
(setq jedi:complete-on-dot t)

これでうまくいった。

OpenCVの補完

補完対象とするソースコードまでのパスにopencv/modules/python/src2を追加。
opencvソースコードgithubから落としてきた。)

(setenv "PYTHONPATH"
	"C:/Users/Kenta/Miniconda3/envs/py35cv")
(setenv "PYTHONPATH"
	"C:/Users/Kenta/Desktop/opencv/modules/python/src2") ;; ここを追加

f:id:kenbell1988:20170115162744j:plain

うまくいきました。この要領で、ほかのライブラリもソースコードまでのパスを追加すればよい。