Quantcast
Channel: Vimタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 5608

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

$
0
0

 素直に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


Viewing all articles
Browse latest Browse all 5608

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>