LoginSignup
3
3

More than 5 years have passed since last update.

pyenvでもanacondaでもjedi-vimを動かす

Posted at

pyenvもpipenvもanacondaも全てに対応。鉄の意志で。

やること

今のシェルで呼び出せるpythonを補完する設定です。
~/.vim/ftplugin/python.vim
をこうしました。

pythonx << EOF
import subprocess
import sys
path = subprocess.run(['python','-c','import site; print(site.getsitepackages()[0])'],
                      stdout=subprocess.PIPE).stdout
path = path.strip()
path = path.decode('utf-8')
path = str(path)

if not path in sys.path:
    sys.path.append(path)
EOF

解説

最近のpythonではシェルを使うにはsubprocessモジュールのrun()を使うのが良いらしいです。

run()は第一変数にコマンドラインをスペースで分けたリストを放り込めば良いようです。
で、結果を取得したい場合はstdout=subprocess.PIPEというのをつけねばならぬらしい。
返り値はsubprocessモジュールで定義されたオブジェクトで、
その中のstdoutという変数に結果が格納されるようです。
文字列には改行文字が含まれていたりするのでstripで取り除いてあげます。
文字列はバイトの文字列なので、utf-8にデコードしてあげないといけません。

クソ面倒くさくね(´・ω・`)?

でもまぁ、これでどんなpythonの環境でもjediの力が及ぶわけです。
フォースとともにあらんことを。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3