計算物理屋の研究備忘録

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

ElpyでEmacsのPython統合開発環境を構築

Elpy

EmacsPythonのコードを書く時、自動的に補完候補を出したり、文法チェックをしたり、コードを整形したりと、統合開発環境を構築できるパッケージ。内部では補完とコード解析にcompnayjedi、文法チェックにはflake8などPythonのパッケージが使われている。

github.com

 インストール

インストールはpackage.elからすればいい。elpy以外のEmacsのパッケージは依存で勝手に入るかもしれないが、以下のものを入れておく。flycheckflymakeの代わりにflycheckを使いたい人だけ。

  • company
  • flycheck

他にも以下のPythonパッケージをpipなどでインストールしておく。 たぶん全部が必須ではない。自分が必要とするやつだけ入れればよい。

  • jedi
  • rope
  • autopep8
  • yapf
  • black
  • flake8

pyenv

pyenvを使っている場合、というよりpyenvを使っていなくても、自分が使用しているPythonにパスが通ってないとうまくelpyが動作しない。

Emacsから実行するときのパスはexec-path。scratchバッファでexec-pathと書いて、C-jで評価すると確認できる。pyenvの場合はexec-path/home/xxx/.pyenv/shims/などが入っていないとうまくいかず、システムのPythonが使われる。

パスを通す手っ取り早い方法はbashzshなどのログインシェルでパスを通しておいて、それをexec-path-from-shellを使ってEmacsに引き継がせる

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

設定

use-packageを使って設定した。設定方法は公式のドキュメントに書いてあるのでコピペするだけ

elpy.readthedocs.io

;;; elpy (melpa-stable)
(use-package elpy
  :ensure t
  :pin melpa-stable
  :defer t
  :init
  (advice-add 'python-mode :before 'elpy-enable)
  :config
  (setq elpy-rpc-virtualenv-path 'current)
  (when (load "flycheck" t t)
    (setq elpy-modules (delq 'elpy-module-flymake elpy-modules))
    (add-hook 'elpy-mode-hook 'flycheck-mode)))

設定が済んだら、Emacsを起動してM-x elpy-configでElpyがうまく動いているか確認できる

Elpy Configuration

Emacs.............: 26.3
Elpy..............: 1.32.0
Virtualenv........: None
Interactive Python: python 3.7.5 (/home/xxx/.pyenv/shims/python)
RPC virtualenv....: .pyenv (/home/xxx/.pyenv)
 Python...........: python 3.7.5 (/home/xxx/.pyenv/shims/python)
 Jedi.............: 0.15.2
 Rope.............: 0.14.0
 Autopep8.........: 1.4.4
 Yapf.............: 0.29.0
 Black............: 19.10b0
Syntax checker....: flake8 (/home/xxx/.pyenv/shims/flake8)