Edited at

HomebrewでインストールしたMacVimがpyenvのpythonでビルドされない問題を解決

More than 3 years have passed since last update.

場当たり的な解決方法です。細かいところは間違っていると思いますが、とりあえずこれで上手くいったのでまとめておきます。いい方法、正しい方法があったら教えて下さい。


こんな問題でお悩みの方を救う記事です


  • 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