LoginSignup
7
8

More than 5 years have passed since last update.

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

Last updated at Posted at 2016-08-13

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

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

  • 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

7
8
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
7
8