emacs 24 で Python の環境を作る
1 環境
- Windows 7 64bit
- gnupackdevel-13.06-2015.11.08
- binutils 2.25-4
- libuuid-devel 2.25.2-2
- GNU Emacs 24.5.1 (i686-pc-cygwin) of 2015-11-08 on gnupack
- Python 2.7.10
- python-setuptools 15.2-1
- easyinstall 2.7
- pip 8.1.1 from /usr/lib/python2.7/site-packages/pip-8.1.1-py2.7.egg (python 2.7)
- apipkg==1.4
- autopep8==1.2.2
- epc==0.0.5
- execnet==1.4.1
- jedi==0.9.0
- pbr==1.8.1
- pep8==1.7.0
- py==1.4.31
- pyflakes==1.1.0
- pytest==2.9.1
- pytest-cache==1.0
- pytest-pep8==1.0.6
- sexpdata==0.0.3
- six==1.10.0
- stevedore==1.12.0
- virtualenv==15.0.1
- virtualenv-clone==0.2.6
- virtualenvwrapper==4.7.1
2 python
$ apt-cyg install python $ python --version Python 2.7.10
emacs で python を快適に使用するために、python-mode を入れる。
M-x package-install python-mode
init.el の設定は以下のとおり。
(add-hook 'python-mode-hook '(lambda () (setq indent-tabs-mode nil) (setq indent-level 4) (setq python-indent 4) (setq tab-width 4)))
3 easyinstall
python のパッケージ管理ツール。python-setuptools の中に入っている。
$ apt-cyg install python-setuptools $ easy_install-2.7 --version setuptools 15.2
4 pip
easyinstall の強化版。
$ apt-cyg install binutils libuuid-devel $ easy_install-2.7 pip $ pip --version pip 8.1.1 from /usr/lib/python2.7/site-packages/pip-8.1.1-py2.7.egg (python 2.7)
5 virtualenv
プロジェクト毎に仮想環境を作れるツール。
$ easy_install-2.7 virtualenv
$ easy_install-2.7 virtualenvwrapper
$ source virtualenvwrapper.sh
$ export WORKON_HOME=~/.virtualenvs
$ virtualenv --version
15.0.1
例えば次のように使う。~/.virtualenvs/myproject を仮想環境用ディレクトリとして、cherrypy を入れている。不要になったら、削除して終り。
$ mkdir -p ~/.virtualenvs/myproject $ cd ~/.virtualenvs/myproject $ virtualenv . $ source bin/activate $ pip install cherrypy $ deactivate $ cd .. $ rmvirtualenv myproject
6 PEP8
Python のコーディング規約 PEP8 のチェックなどを簡単にするツール群。
$ pip install pep8 pytest pytest-pep8 autopep8
pep8 は、PEP8 に準拠しているかを調べるツール。例えば、以下のように使う。
$ cat 2016-03-29-174409.py import sys, os $ pep8 2016-03-29-174409.py 2016-03-29-174409.py:1:11: E401 multiple imports on one line
pytest-pep8 は、pep8 をより見易くしたもの。例えば、以下のように使う1。
$ cat 2016-03-29-174409.py
import sys, os
$ py.test --pep8 2016-03-29-174409.py
============================= test session starts ==============================
platform cygwin -- Python 2.7.10, pytest-2.9.1, py-1.4.31, pluggy-0.3.1
rootdir: /home/clothoid/junk, inifile:
plugins: pep8-1.0.6
collected 1 items
2016-03-29-174409.py F
=================================== FAILURES ===================================
__________________________________ PEP8-check __________________________________
/home/clothoid/junk/2016-03-29-174409.py:1:11: E401 multiple imports on one line
import sys, os
^
=========================== 1 failed in 0.02 seconds ===========================
autopep8 は pep8 に準拠したものとなるように自動で直してくれるツール。例えば、以下のように使う。
$ cat 2016-03-29-174409.py import sys, os $ autopep8 2016-03-29-174409.py import sys import os
pep8 を emacs から利用するために、package を入れる。
M-x package-install RET python-pep8 RET
そして、init.el に以下を記述
(require "python-pep8") ; pep8 のインストールパスを指定 (defcustom python-pep8-command "/usr/bin/pep8" "PEP8 command." :type '(file) :group 'python-pep8)
python-pep8 の使い方は、例えば、2016-03-29-174409.py を開き、M-x python-pep8 とすると python-pep8 バッファに以下のように表示される。
[*python-pep8*] === -*- mode: python-pep8; default-directory: "~/junk/" -*- PEP8 started at Tue Mar 29 18:01:10 pep8 --repeat /home/clothoid/junk/2016-03-29-174409.py | sort -n -t: -k2 /home/clothoid/junk/2016-03-29-174409.py:1:11: E401 multiple imports on one line PEP8 finished at Tue Mar 29 18:01:10 ===
7 pyflakes
Python の文法エラーをチェックするもの。
pip install pyflakes
pyflakes は、例えば、以下のように使う。
$ cat 2016-03-29-180555.py #!/usr/bin/env python # -*- coding: utf-8 -*- if __name__ == '__main__' print 'OK!' $ pyflakes 2016-03-29-180555.py 2016-03-29-180555.py:4:26: invalid syntax if __name__ == '__main__' ^ $ cat 2016-03-29-180555.py #!/usr/bin/env python # -*- coding: utf-8 -*- if __name__ == '__main__': print 'OK!' $ pyflakes 2016-03-29-180555.py $ python 2016-03-29-180555.py OK!
pyflakes を emacs から使うために、以下のように設定する。
M-x package-install RET flymake RET M-x package-install RET flymake-python-pyflakes RET M-x package-install RET flymake-cursor RET
init.el は以下のようにする。
(require 'flymake-python-pyflakes) (require 'flymake-cursor) (add-hook 'python-mode-hook 'flymake-python-pyflakes-load)
flymake-python-pyflakes および flymake-cursor の使い方は、例えば、以下のようなファイルで、
#!/usr/bin/env python # -*- coding: utf-8 -*- if __name__ == '__main__' print 'OK!'
if の行にカーソルがくると、ミニバッファに以下のように表示される。
invalid syntax
8 jedi
python でのかしこい補完機能2。
pip install epc jedi
emacs から利用するために、以下を設定する。
M-x package-install RET jedi RET
init.el は以下のとおり。
(add-hook 'python-mode-hook 'jedi:setup)
(setq jedi:complete-on-dot t)
上記を設定後、M-x jedi:install-server とすると設定が終る。
使い方は .py ファイルを開いて、例えば、impo まで書くと補完候補が表示される。
9 参考
- Cygwin 環境に virtualenv を入れてみた - Qiita
- virtualenv で python 環境を管理する - Qiita
- ちらのうら - Cygwin 上で pip と setuptools をインストールする方法
- Emacs で Python 開発環境を構築 | Futurismo
- EmacsWiki: Python Programming In Emacs
- Python のコーディング規約 PEP8 に準拠する - Qiita
- Jedi.el - Python auto-completion for Emacs — Emacs Jedi 0.2.0alpha2 documentation
- emacs+pyflakes+flymake で python の構文チェックを勝手にしてもらう - yukke::note
- emacs の flymake パッケージの使い方 - Narrow Escape
- Python パッケージ管理技術まとめ (pip, setuptools, easyinstall, etc)
- はじめに — pep8-ja 1.0 ドキュメント
- Python の Lint (文法チェッカ) まとめ - flake8 + hacking を使う - - Qiita