この記事が参考になると思われる方
- 駆け出しのpythoniaさん
- 駆け出しのvimmerさん
今回関係ありそうな私の環境
- os :osx lion (「・ω・)「ガオー
- エディタ :macvim kaoriya
- パッケージ管理ソフト : homebrew (pythonもhomebrew 経由で利用)
10月のはじめに
Big Sky :: python 補完のVimプラグイン「jedi-vim」がスゲー
という記事を見つけて. 「これはいい」と思ってjedi-vimを導入したのですが,どうにも上手く動いてくれなくて2ヶ月近く放置していました.たぶん自分の環境では使えないのかな... と諦めかけていたのですが,昨日@shtn さんから対処法を教えて頂いたのでご紹介します.
追記(2013/8)
jedi.vimのプラグインフォルダ内で
git submodule update --initで解決します. 詳しくは, vimでpython3を書く時のおすすめの補完設定をご覧ください
これ以降の情報は誤った解決策がなので,おすすめはしません
私の陥った症状
jedi-vimを導入した状態でpythonのファイルを開くと,
ImportError: No module named jedi
って怪しい文字列が一瞬ふわっと出てきて,(一瞬過ぎてキャプれない)
いざ文字を打とうとすると,一文字打つたびに
「すごい怒られるよ〜 ( ´Д`) 」
という感じになり,もはや文字を打つこともままならない状態でした.
一応環境の確認も...
もしかしたら「jedi 自体がうまく入らなかったのかな?」とも思い easy_install で確認..
easy_install jedi Searching for jedi Best match: jedi 0.5b3 Processing jedi-0.5b3-py2.7.egg jedi 0.5b3 is already the active version in easy-install.pthUsing /usr/local/lib/python2.7/site-packages/jedi-0.5b3-py2.7.egg Processing dependencies for jedi Finished processing dependencies for jedi
うん,きちんと入ってる.
ipythonでも jedi がインポート出来ていました.
更には,vimshell内のpythonも確認しましたが,jedi をインポートしてもエラーでないし,homebrewのpython使っています.
こうなってくるとわけがわからなかったのですが,唯一考えられるのはjedi-vimがつかってるpythonは普段使っているhomebrewで導入したpythonではないとということでした.
半ばあきらめ気味にそんなことをtwitterで愚痴っていたら
vimscript(jedi-vim)からpython呼ぶときに/usr/bin/python のほうが呼ばれてる気がする
— Kazuki Yoshida (@101kaz) December 2, 2012
@shtn_ やっぱそうなんですか shtnさんもjedi-vim つかってます?
— Kazuki Yoshida (@101kaz) December 2, 2012
@shtn_ そうです!! なにかやり方ありますか?
— Kazuki Yoshida (@101kaz) December 2, 2012
@shtn_ おーーーーーーーーーーーーーーーーーーーー やってみます!! あざます
— Kazuki Yoshida (@101kaz) December 2, 2012
と有力な情報が!!! .pthというキーワードを頼りに色々調べたら解決しました.
対処法
( このままでも使えるのですがご指摘があったので,後ほど追記します)
vimのpythonインターフェースについてはこちらがわかりやすかったです.
VimのPythonインターフェースから使うpythonは変更しにくくPYTHONPATHもちょっと違う - kanonjiの日記
結局のところ(私の場合)vimのpythonは
/Library/Python/2.7/site-packages/
などからライブラリを探しているのですが(確認方法は上記のurl参考),肝心のjediは
/usr/local/share/python/Library/Python/2.7/site-packages/
にあるのでインポートエラーが出ます.そこで「vimのpythonさん , こっちにもありんす」
と教えて上げるために先程教えて頂いた..pthファイルを使います.
つまり,/Library/Python/2.7/site-packages/xxx.pth のようなファイルに
/usr/local/lib/python2.7/site-packages/jedi-0.5b3-py2.7.egg
と書き込めば OKです. (パスは環境によって違うと思いますので適宜変更して下さい)
jedi-vimがちゃんと使えるか 確認するためには vimでpythonファイルを開き適当なところで C-space(コントロール+ スペース)を押して入力補完が出てくれば問題ありません.
余談
ちなみに,
Python/PYTHONPATH, sys.path, "site"モジュール, "site-packages"ディレクトリ - Glamenv-Septzen.net
さんの記事によると
PYTHONPATH環境変数と "site-packages"ディレクトリ直下の".pth"ファイルは無関係。".pth"ファイルは"site"モジュールが処理するファイル。PYTHONPATHはPython処理系(実行ファイル本体)が処理する環境変数。実例で示したように、それぞれ独立してsys.pathにPATHを追加している。
らしいです. うーーん 難しいですね (´・ω・`)