人権真骨頂

とくがたかいことでゆうめい

Pythonをはじめたので環境設定のメモ

新しい言語を始めるときは環境設定が一番面倒くさい。Pythonって2系と3系どっちやればええねんって感じがする。

とりあえず、諸々のインストールから。

Python インストール

$ yaourt -S python # Python2.x は python2

これでPython3.x が入る。

PythonにはRubyでいうところの gem 的な pip というものがあるらしいのでそれも一緒にインストールしておく。

$ yaourt -S python-pip

あと virtualenv っていうやつも入れるらしい。 Bundler 的なものかな? virtualenv のラッパーの virtualenvwrapper も一緒にさっき導入した pip を使ってインストールする。

$ sudo pip install virtualenv virtualenvwrapper

これをインストールしたら .zshrc に以下を書いて、パスを通してスクリプトを読み込むようにしておく。

if which virtualenvwrapper.sh > /dev/null 2>&1 ; then
  export WORKON_HOME=$HOME/.virtualenvs
  source `which virtualenvwrapper.sh`
fi

これで virtualenv が使えるようになったらしい。

環境を作るには mkvirtualenv , 環境を切り替えるには workon , デフォルトにするなら deactivate を使えばいいらしい。 一覧は lsvirtualenv , 削除は rmvirtualenv 。 他のコマンドについてはここを参照すると良さそう。

Vim の設定

だいたいインストールしなければいけないものはインストールし終わったので、Vimで快適にPythonを書くための設定を行う。設定したいと思っているのは以下の項目。

シンタックスチェック

シンタックスチェックには flake8 を利用する。

$ sudo pip install flake8

で, flake8 をインストールできたので、あとは設定を書く。

let g:syntastic_python_checkers = ["flake8"]

コード補完

補完には jedi-vim を利用する。

NeoBundle "davidhalter/jedi-vim"

デフォルトの設定では使いづらいところがあるので設定を書いておく。 ここを参照した。 [[vim]python補完プラグイン「jedi-vim」を快適にする方法] (http://dackdive.hateblo.jp/entry/2014/08/13/130000)

autocmd FileType python setlocal completeopt-=preview
autocmd FileType python setlocal omnifunc=jedi#completions
let g:jedi#auto_vim_configuration = 0
if !exists('g:neocomplete#force_omni_input_patterns')
  let g:neocomplete#force_omni_input_patterns = {}
endif
let g:neocomplete#force_omni_input_patterns.python = '\h\w*\|[^. \t]\.\w*'

あとは jedi プラグインの中で

$ git submodule update --init

を実行すると使用できるようになる。

コーディング規約チェック

pep8 準拠のコードを書くように指摘してもらうようにする。 保存時にチェックしてもらうために, andviro/flake8-vim を入れる。 設定も書いておく。

NeoBundle "andviro/flake8-vim"
let g:PyFlakeOnWrite = 1
let g:PyFlakeCheckers = 'pep8'

あとは pep8 基準のインデントするようにしたいので, hynek/vim-python-pep8-indent もインストールする。

NeoBundle "hynek/vim-python-pep8-indent"

その他

vim-virtualenv っていう virtualenv をべんりに扱えるプラギンがあるらしいのでそれも入れておく。

NeoBundle "jmcantrell/vim-virtualenv"

まとめ

やっぱり新しい言語を始めるときは環境設定が面倒くさいなぁ。PythonRubyより厳格で,書き方が限られていて好き。これでようやく言語処理100本ノック を始められる。