場当たり的な解決方法です。細かいところは間違っていると思いますが、とりあえずこれで上手くいったのでまとめておきます。いい方法、正しい方法があったら教えて下さい。
##こんな問題でお悩みの方を救う記事です
- 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が作成されないので、以下の様な環境変数を付け加えてビルドします。python3は-undefined dynamic_lookup
がないとpip install greenlet
などでエラーが出ます。
バージョン数字は自分が使っているものに変更しましょう。
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 -undefined dynamic_lookup -bundle"\
LDCXXSHARED="clang++ -undefined dynamic_lookup -bundle" \
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の部分は自分のユーザ名に変更しましょう。
def install
perl_version = '5.16'
ENV.append 'VERSIONER_PERL_VERSION', perl_version
ENV.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