MacとEmacsのPython開発環境について調べてみた
Python使えると年収が高くなるかもしれないので、触っておくことにしました。
プログラマー年収ランキング2016!言語別、第1位はPythonの651万円 | みんなのスタンバイ
というわけで、まずはMac上に開発環境を整えることに。
Pythonバージョン管理
Macは標準でPythonがインストールされているものの、そのバージョンは2.7系。(El Capitanでは2.7.11が入っていました)
メジャーバージョンは今の時点で3.5まで上がっているものの、どうやら2.7系もまだまだ現役なようなので、用途に応じて切り替えられるように、バージョン管理ツールを導入しておくことに。
NodeやRubyなどのバージョン管理にanyenvを使っているので、その流れでpyenvを使います。
$ anyenv install pyenv $ exec $SHELL -l $ pyenv install 3.5.1
これで3.x系も触ってみたいときに切り替えられます。
$ pyenv global 3.5.1 $ python --version Python 3.5.1 $ pyenv global system $ python --version Python 2.7.11
Python界隈では、異なるバージョンのPythonを扱うときにvirtualenvなる仕組みなどもあるみたいなので、いちおうインストールしておく。
$ pip install virtualenv
Pythonパッケージ管理
Node.jsで言うところのnpmのようなパッケージ管理ツールとしては、 pip
がデファクトな模様。
以前は別途インストールが必要だったようですが、El Capitan上のPyhtonにはpipもプリインストールされていたので、そのまま利用できます。
あとで使いそうな機能として、Brewfileなどのように必要なパッケージのリストを用意しておいて、そこから一括してインストールする機能があるみたい。
$ pip freeze > Pyfile $ pip install -r Pyfile
これを使えば、自分の環境構築リポジトリ に簡単に含められるかなと思ったのですが、ちょっと試してみたところ、Homebrewなどで入れてしまっているPython系のツールなども含まれてしまっているので、そのままだと二重管理のような状態になりそう。
当面は pip install
を羅列したシェルスクリプトで管理しておいて、Python活用するなら改めて検討することに。
Emacs用開発環境
自分のメインエディタであるEmacsでの開発環境について。
メジャーモード
Python用のメジャーモードとしては、どうやら2種類あるもよう。
- python.el - Emacs標準で付いているもの
- python-mode-devs/python-mode - コミュニティによって開発されているもの
いずれpython.el側にpython-modeの機能を取り込んでいくような計画があるようですが、そういった意味でpython-modeの方が活発に開発されているようなので、こちらを採用することにしました。
MELPAで公開されていたので list-packages
でpython-modeを選択してインストール。
そのままでは標準添付のpython.elが優先されてしまうようだったので、以下の設定を追加。
(autoload 'python-mode "python-mode" "Python Mode." t) (add-to-list 'auto-mode-alist '("\\.py\\'" . python-mode)) (add-to-list 'interpreter-mode-alist '("python" . python-mode))
なんか色々できるみたいだけど、ひとまずインストールしておいて、使い方は勉強しながらつかんで行く。
静的解析
Python用の静的解析ツールを探すに当たり、Flycheckが対応していないか確認してみました。
Supported Languages — Flycheck 26-cvs documentation
FlycheckがサポートしているPython用の静的解析ツールとしては、flake8、Pylint、Pythonのコンパイラを使うpycompileなどがあるみたい。
- Python の Lint (文法チェッカ) まとめ - flake8 + hacking を使う - - Qiita
- Pythonのスタイルガイドとそれを守るための各種Lint・解析ツール5種まとめ! - SideCI Blog
とりあえず守備範囲が広そうな印象のPylintを使うことにしました。
さっそく pip
でインストール。
$ pip install pylint
設定ファイルは以下の方法で初期テンプレートを生成できるもよう。
$ pylint --generate-rcfile > ~/.pylintrc
とりあえず何が重要なのかわからないので、まずはデフォルトで運用してみて、適宜いじっていくことに。
軽く書いただけでやたらと出てきた C0111
だけ disable に追加。
オートコンプリート
オートコンプリート系としては、Jedi というEmacs用のオートコンプリートツールが便利なようなので導入。
まずはMELPAからjediをインストール後、init.elに設定を追加。
(add-hook 'python-mode-hook 'jedi:setup) (setq jedi:complete-on-dot t)
その後、Emacs上で M+x jedi:install-server
を実行します。
このとき、内部的にvirtualenvでJedi用の環境が作られるのですが、自分の場合 ~/.emacs.d/.python-environments/default
という場所に作られてしまいました。
そこで、init.elに jedi:environment-root
を追加して、環境が作られる先を設定しました。
(setq jedi:environment-root "~/.emacs.d/var/jedi/env")
勉強
日本語のドキュメントとしては Python 2.7.x ドキュメント が良いらしい。
この中の Python チュートリアル あたりが一通り押さえられるらしいほか、 オンライン ドキュメント からはPDFでのダウンロードできるサイトもあったので、とてもありがたい。
- 作者: Guido van Rossum,鴨澤眞夫
- 出版社/メーカー: オライリージャパン
- 発売日: 2016/03/24
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る