python開発用のエディタをVimにしようと思ったけど色々やらないといけなかったのでその時の手順メモ

シンタックスで色付けをする:pythonインターフェイスが含まれているか確認

通常、vimパッケージを入れただけだと、pythonインターフェイスが含まれていないため、-pythonと表記されている

$ vim --version | grep python
+cryptv          +linebreak       -python          +viminfo
+cscope          +lispindent      -python3         +vreplace

シンタックスで色付けをする:vim-noxパッケージをインストール

$ sudo apt-cache search vim-nox
vim-nox - Vi IMproved - 強化版 vi エディタ - スクリプティング言語サポート付き

$ sudo apt-get install vim-nox

シンタックスで色付けをする:pythonインターフェイスが有効になったか確認

$ vim --version | grep python
+cryptv          +linebreak       +python          +viminfo
+cscope          +lispindent      -python3         +vreplace

リンク: gcc   -L. -Wl,-z,relro -L/build/ruby2.1-64qTCU/ruby2.1-2.1.5/debian/lib -fstack-protector -rdynamic -Wl,-export-dynamic -Wl,-E  -fPIE -pie -Wl,-z,relro -Wl,-z,now -Wl,--as-needed -o vim        -lm -ltinfo -lnsl  -lselinux  -lacl -lattr -lgpm -ldl  -L/usr/lib -llua5.2 -Wl,-E  -fstack-protector -L/usr/local/lib  -L/usr/lib/x86_64-linux-gnu/perl/5.20/CORE -lperl -ldl -lm -lpthread -lcrypt -L/usr/lib/python2.7/config-x86_64-linux-gnu -lpython2.7 -lpthread -ldl -lutil -lm -Xlinker -export-dynamic -Wl,-O1 -Wl,-Bsymbolic-functions  -L/usr/lib/x86_64-linux-gnu -ltcl8.6 -ldl -lz -lpthread -lieee -lm -lruby-2.1 -lpthread -lgmp -ldl -lcrypt -lm

// vimを起動する
$ vim

// has('python')として、1が表示されればOK
:echo has('python')
1

シンタックスで色付けをする:python3は?

ぐぐってみると、Linux版の多くはまだpython2.x系がメインらしく、python3系に対応するにはVimをビルドしなおしたり色々しないといけないらしい*

とりま開発環境構築がMustで必要かどうかの判断が今の所つかないのでパス

パッケージ管理システムの導入:pipのインストール

$ sudo apt-get install python-pip

$ pip --version
pip 1.5.6 from /usr/lib/python2.7/dist-packages (python 2.7)

仮想環境を手軽に作成出来るようにする:virtualenvのインストール

pythonプロジェクト毎にバージョンや必要なパッケージを分けて仮想環境が構築出来るらしい。インストール関連の記事をぐぐってると大体これが載ってたのでとりま入れてみる

// virtualenv
$ sudo pip install virtualenv
Downloading/unpacking virtualenv
  Downloading virtualenv-15.0.1-py2.py3-none-any.whl (1.8MB): 1.8MB downloaded
Installing collected packages: virtualenv
Successfully installed virtualenv
Cleaning up...

仮想環境を手軽に作成出来るようにする:virtualenvwrapperのインストール

// virtualenvwrapper
$ sudo pip install virtualenvwrapper
Downloading/unpacking virtualenvwrapper
  Downloading virtualenvwrapper-4.7.1-py2.py3-none-any.whl
Downloading/unpacking stevedore (from virtualenvwrapper)
  Downloading stevedore-1.13.0-py2.py3-none-any.whl
Downloading/unpacking virtualenv-clone (from virtualenvwrapper)
  Downloading virtualenv-clone-0.2.6.tar.gz
  Running setup.py (path:/tmp/pip-build-xXV4En/virtualenv-clone/setup.py) egg_info for package virtualenv-clone

Requirement already satisfied (use --upgrade to upgrade): virtualenv in /usr/local/lib/python2.7/dist-packages (from virtualenvwrapper)
Downloading/unpacking six>=1.9.0 (from stevedore->virtualenvwrapper)
  Downloading six-1.10.0-py2.py3-none-any.whl
Downloading/unpacking pbr>=1.6 (from stevedore->virtualenvwrapper)
  Downloading pbr-1.9.1-py2.py3-none-any.whl (96kB): 96kB downloaded
Installing collected packages: virtualenvwrapper, stevedore, virtualenv-clone, six, pbr
  Running setup.py install for virtualenv-clone

    Installing virtualenv-clone script to /usr/local/bin
  Found existing installation: six 1.8.0
    Not uninstalling six at /usr/lib/python2.7/dist-packages, owned by OS
Successfully installed virtualenvwrapper stevedore virtualenv-clone six pbr
Cleaning up...

.bashrcに設定を追加

source /usr/local/bin/virtualenvwrapper.sh
export WORKON_HOME=~/.virtualenvs

ターミナル開き直すとホームディレクトリのどこかになんか6個ぐらいファイルがざざっと作られる(メモ取ってなかった)

追記:virtualenvwrapper

以下をvirtualenvwrapper経由で行う使い方 → virtualenvwrapperの使い方メモ

仮想環境を手軽に作成出来るようにする:virtualenvで仮想環境を作ってみる

// プロジェクトディレクトリを作る
$ mkdir myProject
$ cd myProject/

// 仮想環境を作ってみる(--no-site-packagesをつけるとまっさらな状態になるらしい)
$ virtualenv --no-site-packages .
New python executable in /home/nobiki/myProject/bin/python
Installing setuptools, pip, wheel...done.

// 仮想環境に入る
$ source bin/activate

// 先頭に"(プロジェクト名)"が表示されるようになる
(myProject) $

(myProject) $ ll
合計 20
drwxr-xr-x 2 nobiki nobiki 4096  5月 11 13:10 bin
drwxr-xr-x 2 nobiki nobiki 4096  5月 11 13:10 include
drwxr-xr-x 3 nobiki nobiki 4096  5月 11 13:10 lib
drwxr-xr-x 2 nobiki nobiki 4096  5月 11 13:10 local
-rw-r--r-- 1 nobiki nobiki   60  5月 11 13:10 pip-selfcheck.json

// パッケージの違いを確認(仮想環境内)
(myProject) $ pip list
pip (8.1.2)
setuptools (21.0.0)
wheel (0.29.0)

//仮想環境から出る
(myProject) $ deactivate

// パッケージの違いを確認(仮想環境外)
$ pip list
argparse (1.2.1)
cffi (0.8.6)
chardet (2.3.0)
colorama (0.3.2)
cryptography (0.6.1)
defusedxml (0.4.1)
docutils (0.12)
html5lib (0.999)
meld (3.12.1)
[以下略]

自動補完を有効にする:vim-virtualenvのインストール

そのままだと、virtualenv環境でのパスが通ってないらしい。

(myProject) $ touch test.py
(myProject) $ vim test.py

// vimを立ち上げて現状のPATHを確認
:python for path in sys.path: print(path)
/usr/lib/python2.7
/usr/lib/python2.7/plat-x86_64-linux-gnu
/usr/lib/python2.7/lib-tk
/usr/lib/python2.7/lib-old
/usr/lib/python2.7/lib-dynload
/usr/local/lib/python2.7/dist-packages
/usr/lib/python2.7/dist-packages
/usr/lib/python2.7/dist-packages/gtk-2.0
/usr/lib/pymodules/python2.7
_vim_path_

NeoBundleでインストール

// .vimrcに追記してインストール
NeoBundle 'jmcantrell/vim-virtualenv'
(myProject) $ vim -c "NeoBundleInstall"

// インストール後のPATHを確認
(myProject) $ vim test.py

:python for path in sys.path: print(path)
/usr/lib/python2.7
/usr/lib/python2.7/plat-x86_64-linux-gnu
/usr/lib/python2.7/lib-tk
/usr/lib/python2.7/lib-old
/usr/lib/python2.7/lib-dynload
/usr/local/lib/python2.7/dist-packages
/usr/lib/python2.7/dist-packages
/usr/lib/python2.7/dist-packages/gtk-2.0
/usr/lib/pymodules/python2.7
_vim_path_
/home/nobiki/vim/.vim/bundle/vim-virtualenv/autoload    ← なにか追加された

何か適当にインストールしてみる

(myProject) $ pip install django
Collecting django
  Using cached Django-1.9.6-py2.py3-none-any.whl
  Installing collected packages: django
  Successfully installed django-1.9.6

この時点で、マニュアルらしき物と補完が表示されるようになった

自動補完を有効にする:jedi-vimのインストール

jedi-vimをインストールして、期待する補完が表示されるようにする

// .vimrcに追記してインストール
NeoBundle 'davidhalter/jedi-vim'
(myProject) $ vim -c "NeoBundleInstall"