素直にNeoVimを使えば解決するんですが、MacVimにこだわってみました。MacVimをHomebrewでビルド&インストールすると、Python関連のconfigureの引数やら環境変数やらが自動で設定されてしまうので、思うよなビルドが出来ませんでした。そのあたりを解決することができたのでまとめました。
こんな問題でお悩みの方を救う記事です
- pyenvのPythonではなく、システムやHomebrewのPythonでMacVimがビルドされてしまう
- Homebrewでpython3をインストールしないと、+python/dyn +python3/dyn にならない
brew install python3
して--with-properly-linked-python2-python3
でインストール後、pythonファイルを開くとSegmentaion fault
MacVimのインストール手順
macvimのレポジトリをtap
brew install macvim
は、ビルド済みのものをインストールするだけなので、macvimのリポジトリからソースコードをとってきてビルド&インストールします。
$ brew tap macvim-dev/macvim
pyenvのPythonをDLL付きでインストール
pyenvで普通にインストールした場合、MacVimのビルドに必要なDLLが作成されないので、以下の様な環境変数を付け加えてビルドします。インストール済みだと上書きしてくれまうす。
バージョン数字は自分が使っているものに変更しましょう。
※8/15追記: python3に-undefined dynamic_lookup
を追加しました。これがないとpipでライブラリをインストールするときエラーがでてしまいます。python2は無しで大丈夫です。
PYTHON_CONFIGURE_OPTS="--enable-shared"\LDSHARED="clang -bundle"\LDCXXSHARED="clang++ -bundle"\BLDSHARED="clang -bundle -lpython2.7"\
pyenv install 2.7.12
PYTHON_CONFIGURE_OPTS="--enable-shared"\LDSHARED="clang -bundle -undefined dynamic_lookup"\LDCXXSHARED="clang++ -bundle -undefined dynamic_lookup"\BLDSHARED="clang -bundle -undefined dynamic_lookup -lpython3.5m"\
pyenv install 3.5.2
brew editでビルドの設定を変更
ビルドの引数がソースコードで設定されているのでbrew editで、ソースコードを書き換えていきます。(brewに不慣れなので気づくのに1日かかりました。)
$ brew edit macvim-dev/macvim/macvim
Rubyのコードが表示されるので、上部のdef installを変更します。コメントアウトしている部分がデフォルトの値です。HomebrewでインストールしたPython3しかみないようになっていますので、pyenvのPython3を参照するようパスを変更します。python2もMacOSのSystemライブラリを参照しようとしたりするので、python2もpyenvのpython2を参照するよう変数とパスを追記します。
enushiの部分は自分のユーザ名に変更しましょう。
definstallperl_version='5.16'ENV.append'VERSIONER_PERL_VERSION',perl_versionENV.append'VERSIONER_PYTHON_VERSION','2.7'ENV.append'vi_cv_path_python',"/Users/enushi/.pyenv/versions/2.7.10/bin/python2"ENV.append'vi_cv_path_python3',"/Users/enushi/.pyenv/versions/3.4.3/bin/python3"ENV.append'vi_cv_path_plain_lua',"#{HOMEBREW_PREFIX}/bin/lua"ENV.append'vi_cv_dll_name_perl',"/System/Library/Perl/#{perl_version}/darwin-thread-multi-2level/CORE/libperl.dylib"ENV.append'vi_cv_dll_name_python3',"/Users/enushi/.pyenv/versions/3.4.3/lib/libpython3.4m.dylib"ENV.append'vi_cv_dll_name_python',"/Users/enushi/.pyenv/versions/2.7.10/lib/libpython2.7.dylib"#ENV.append 'vi_cv_path_python3', "#{HOMEBREW_PREFIX}/bin/python3"#ENV.append 'vi_cv_path_plain_lua', "#{HOMEBREW_PREFIX}/bin/lua"#ENV.append 'vi_cv_dll_name_perl', "/System/Library/Perl/#{perl_version}/darwin-thread-multi-2level/CORE/libperl.dylib"#ENV.append 'vi_cv_dll_name_python3', "#{HOMEBREW_PREFIX}/Frameworks/Python.framework/Versions/3.5/Python"
MacVimのインストール
--with-properly-linked-python2-python3
は必須です。--with-override-system-vim
は、OSにデフォルトで入っているvim(コンソール上で動くvim)をmvim -v
に置き換えてくれるオプションです。お好みで使いましょう。
brew install --HEAD --with-properly-linked-python2-python3 --with-override-system-vim macvim-dev/macvim/macvim
インストール後の確認
mvimを起動して以下のコマンドを実行しましょう。
:python print(sys.path)
:py3 print(sys.path)
出力されたパスがpyenvのpythonになっているはずです。また連続して実行できるなら--with-properly-linked-python2-python3
の効果がでています。
参考
それでは。Happy Vim Life