Xeebi

home categories feeds

matplotlib に纏わる補完を jedi がしてくれない

補完してくれない?

よーし matplotlib だ!

no-completion

補完してくれない……つらい……… (ついでに,この時 CPU を大量に喰ってるっぽい.これはなんかのバグかもしれない?)

どうやら

一方 numpy は補完してくれる.軽く調べると特別 matplotlib と jedi で問題が起こるというような状況はない. そう言えば numpy は apt で, matplotlib はそれからかなり経って pip3 で入れたはず.標準+apt で入れたパッケージ群は補完がきいて, pip3 で入れた奴にはきいてなさそうな雰囲気がある.

複雑な状況,自前ビルドという泥沼

しばらく前,OS が Ubuntu 12.04, apt で入る python3 が 3.2 というのに少し悲しんだ僕は自分で python をビルドすることにした. しかも apt で入れた python3 はそのまま残っている. 結果として python3 は 僕にとっては /usr/local/bin/python3 のことであり,例えば pip3 で入れた matplotlib は /usr/local/lib/python3.4/site-packages/ に居る.調べかけて今ひとつ理解できず面倒になった上,複数の環境を使うこともあるまいと思った僕は virtualenv なども結局使わずに, ソースを落として make, これでやってしまうことにしたのだった.

jedi の参照する path

似たような状況の issue が立っていた.

大まかに言えば

で,この vim の python 補完に纏わるやつが読み込む path という点から言うと,同じ質問がここにある

そこで…

path を調べる

:py3(print(sys.path))

['/usr/lib/python3.2', '/usr/lib/python3.2/plat-linux2',
'/usr/lib/python3.2/lib-dynload', '/usr/lib/python3/dist-packages', '_vim_path_']

で一方

$ python3 -c "import sys; print(sys.path)"

['', '/usr/local/lib/python34.zip', '/usr/local/lib/python3.4',
'/usr/local/lib/python3.4/plat-linux', '/usr/local/lib/python3.4/lib-dynload',
'$HOME/.local/lib/python3.4/site-packages', '/usr/local/lib/python3.4/site-packages']

あーーーーそら見てるの違いますよねーーー.

試しに vim 起動 -> まず :py3(sys.path.append('/usr/local/lib/python3.4/site-packages')) あたりをしてから set ft=python して補完するときちんと補完してくれる.

yes-completion

問題はここにあったわけだ.めでたい.

まとめと解決策