2012年9月11日火曜日

vimのpython拡張のための依存管理

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク

vimにはif_pyなるものがあって、vimをpythonからいじることができる。 詳細はvimで:help pythonとかしてみるとわかる。

pythonで作ったものを混ぜてリリースするとなると packageの管理が必要なのですが、ありがちなのはvirtualenvでの管理。

$ cd /home/nori/Desktop/work/vim/junk
$ virtualenv --clear --no-site-packages

とかしておいて、vimを起動。 次のようなvim scriptをquickrunで実行すると、

python << EOF
import vim
import sys
for p in sys.path:
    print p
EOF

次のような結果を得る。

/home/nori/Desktop/work/vim/junk/.python/lib/python2.6/site-packages/setuptools-0.6c11-py2.6.egg
/home/nori/Desktop/work/vim/junk/.python/lib/python2.6/site-packages/pip-1.0.2-py2.6.egg
/home/nori/Desktop/work/vim/junk/.python/lib64/python26.zip
/home/nori/Desktop/work/vim/junk/.python/lib64/python2.6
/home/nori/Desktop/work/vim/junk/.python/lib64/python2.6/plat-linux2
/home/nori/Desktop/work/vim/junk/.python/lib64/python2.6/lib-tk
/home/nori/Desktop/work/vim/junk/.python/lib64/python2.6/lib-old
/home/nori/Desktop/work/vim/junk/.python/lib64/python2.6/lib-dynload
/usr/lib/python2.6
/usr/lib64/python2.6
/usr/lib64/python2.6/lib-tk
/home/nori/Desktop/work/vim/junk/.python/lib/python2.6/site-packages

これの意味するところは、virtualenvを実行してから vimを立ち上げれば、if_pyの開発での依存関係をvirtualenv/pipで管理できるということだ。

また、VimShellからipythonを立ち上げても当然virtualenvも同じになる。もちろんVimShellからのpip installも可能なので、vimに引きこもれます。