質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Vim

VimとはUnix / Linux 系のOSに標準搭載されているターミナル上で動くテキストエディタです。

Q&A

解決済

1回答

4783閲覧

vimのpython環境構築について

退会済みユーザー

退会済みユーザー

総合スコア0

Vim

VimとはUnix / Linux 系のOSに標準搭載されているターミナル上で動くテキストエディタです。

2グッド

0クリップ

投稿2016/02/15 07:59

編集2016/02/15 08:04

###前提・実現したいこと
pyenv環境でvimのjediプラグインを適用したい。

###発生している問題・エラーメッセージ
centOSにてvimをソースコードからビルドし,+python/dynと,+python3/dynを設定するところまではできたのですが,~/.pyenv/shimsにpathを通した後,jediプラグインが適用されなかったため,:py printを実行したところ,

ライブラリの関数 _PyArg_Parse_SizeT をロードできませんでした :py print 1

ライブラリの関数 PySys_SetArgv をロードできませんでした :py3 print(1)

というエラーが出て実行ができません。原因を調べてもわかりやすい記事が見つからなかったためもしこのエラーを回避する方法や,設定をこうやってやり直せばできるという手順をご存知の方いたら教えていただきたいです。vimrcの設定を載せます

###vimrc

vim

1<上略> 2if has('vim_starting') 3set runtimepath^=~/.vim/bundle/neobundle.vim 4endif 5let $PATH = "~/.pyenv/shims:".$PATH 6call neobundle#begin(expand('~/.vim/bundle/') ) 7 8NeoBundleLazy "lambdalisue/vim-django-support", { 9 \ "autoload": { 10 \ "filetypes": ["python", "python3", "djangohtml"] 11 \ }} 12 13NeoBundleFetch 'Shougo/neobundle.vim' 14NeoBundle 'mattn/emmet-vim' 15NeoBundle 'davidhalter/jedi-vim' 16NeoBundle 'scrooloose/syntastic' 17NeoBundle 'Yggdroot/indentLine' 18NeoBundle 'scrooloose/nerdtree' 19 20NeeoBundleLazy "lambdalisue/vim-pyenv", { 21 \ "depends": ['davidhalter/jedi-vim'], 22 \ "autoload": { 23 \ "filetypes": ["python", "python3", "djangohtml"] 24 \ }} 25 26call neobundle#end() 27 28filetype plugin indent on 29 30NeoBundleCheck 31

###追記
vimをbuildするときvimのソースコードをどのURLからもらってくるのがいいのか教えてもらえると嬉しいです。(現在mercurialを利用してリポジトリからcloneしています。)

dsk, T.Kono👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

どうも、Ubuntu にて +python/+python3 を実現している者です。
ご提示されたエラーは見たことがないため、的はずれな意見かもしれませんが

  1. --enable-shared にてコンパイルされた Python ではない => CONFIGURE_OPT="--enable-shared pyenv install 3.5.0 のようにしてやり直す
  2. --enable-shared な Python とリンクできていない => -rpath などで無理やりリンクさせてみる

のどちらかなという気がしています。もしくは OS 的に無理かもしれません(Mac OS X では双方を同時起動可能な Vim のコンパイルは諦めた経緯があります)。
詳細は http://lambdalisue.hatenablog.com/entry/2014/05/21/065845 の下の方に書いてあるので参考にしてください。

追記

vimrc を見る限りすでに紹介した記事はご存知なようですね。

ちなみに上記エラーは vimrc の設定というよりかは vim コンパイルの段階でコケている気がします。おそらく vim -u NONE した後でも :python 1:python3 1 が失敗するのではないでしょうか?

差し支えなければ ./configure に指定しているオプションなどと Python 関連の出力部分をお見せください。もしかしたら何かわかるかもしれません。

投稿2016/02/15 11:14

編集2016/02/15 11:24
Alisue

総合スコア103

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/02/15 11:55

この記事を参考にさせていただいて作業していました。まさかご本人様にアドバイスいただけるとは光栄です。 configureの設定は以下でやりました。 ./configure --enable-multibyte --with-features=huge --enable-cscope --enable-gui=gtk2 --disable-selinux --prefix=/usr/local --enable-xim --enable-fontset --enable-gpm --with-python-config-dir=/home/vagrant/.pyenv/shims/ --enable-fail-if-missing --enable-pythoninterp=dynamic --enable-gpm --enable-acl --with-x=yes --enable-gui=gtk2 --enable-python3interp それに対する出力が以下です。 checking --enable-pythoninterp argument... yes checking for python2... (cached) /usr/bin/python2 checking Python version... (cached) 2.6 checking Python is 2.3 or better... yep checking Python's install prefix... (cached) /usr checking Python's execution prefix... (cached) /usr (cached) checking Python's configuration directory... (cached) /home/vagrant/.pyenv/shims/ (cached) checking if -pthread should be used... yes checking if compile and link flags for Python are sane... yes checking --enable-python3interp argument... yes checking for python3... (cached) /home/vagrant/.pyenv/shims/python3 checking Python version... (cached) 3.5 checking Python is 3.0 or better... yep checking Python's abiflags... (cached) m checking Python's install prefix... (cached) /home/vagrant/.pyenv/versions/3.5.1 checking Python's execution prefix... (cached) /home/vagrant/.pyenv/versions/3.5.1 (cached) checking Python's configuration directory... (cached) /home/vagrant/.pyenv/versions/3.5.1/lib/python3.5/config-3.5m (cached) checking if -pthread should be used... yes checking if compile and link flags for Python 3 are sane... yes checking whether we can do without RTLD_GLOBAL for Python... no checking whether we can do without RTLD_GLOBAL for Python3... no 以下についてはまだ試していないので設定を確認して試してみようと思います。 --enable-shared にてコンパイルされた Python ではない => CONFIGURE_OPT="--enable-shared pyenv install 3.5.0 のようにしてやり直す --enable-shared な Python とリンクできていない => -rpath などで無理やりリンクさせてみる。 根本的に必要な設定がなんなのか漠然としかわかっていない状態なので,それが分かれば自己解決できそうな気もするのですが。。。
Alisue

2016/02/15 12:43

Vim で Python2/Python3 を同時利用するのに根本的に必要なことは [koron さんが述べていること](https://github.com/vim-jp/issues/issues/301#issue-10486086) につきます。そのため `--enable-shared` でコンパイルされた Python2/Python3 ではない限り同時利用は不可能かと思います。 また `pyenv` を使って Python をコンパイルした場合はリンク可能な場所に存在しないため `-rpath` にて強制的にリンクさせる必要があると思います(最低でも自分はそうだった)。 先のスレッドの下の方に新し目の情報が書かれているので参考になさると良いかもしれません。 あと、これに関してはかなり記憶が曖昧ですが > checking whether we can do without RTLD_GLOBAL for Python... no checking whether we can do without RTLD_GLOBAL for Python3... no `-rpath` を `--enable-shared` した python に指定することで、この部分が yes となった**気がします**。記憶違いかもしれませんが……
Alisue

2016/02/15 12:44

コメントは Markdown じゃないのかよ!w
Alisue

2016/02/15 12:47

あと checking --enable-pythoninterp argument... yes checking for python2... (cached) /usr/bin/python2 checking Python version... (cached) 2.6 checking Python is 2.3 or better... yep checking Python's install prefix... (cached) /usr checking Python's execution prefix... (cached) /usr (cached) checking Python's configuration directory... (cached) /home/vagrant/.pyenv/shims/ (cached) checking if -pthread should be used... yes の部分ですが、--with-python-config-dir=/home/vagrant/.pyenv/shims/ にて指定している python と /usr/bin/python2 は同じものでしょうか?もし pyenv でコンパイルしたものであれば、この段階から異なるものを指定していることになります。 Ubuntuのもので申し訳ないですが https://gist.github.com/lambdalisue/102a1f9985b243cd0e71 が自分が利用している +python/+python3 のインストールスクリプトになるので参考にしてください。 --with-python-configure-dir は指定せずに自動で解決させたほうが良いかと思います。
退会済みユーザー

退会済みユーザー

2016/02/15 18:38

https://gist.github.com/lambdalisue/102a1f9985b243cd0e71 のshellスクリプトを参考に自分の環境に置き換えてビルドをやり直したところ,vimの2系3系のpython実行と, jediプラグインの動作確認ができました。この2日間隙間時間を消耗して途方に暮れていたため本当に感謝です。 やはり,vimコンパイル時にshared-objectファイルへのリンクをしていなかったことと,使用するpythonの指定が間違っていたことが原因のようでした。 gccの設定で利用したオプションの意味も理解できました。あとanyenvというのがあるのも知りました。 教えていただいたshellスクリプト見るだけでめちゃくちゃ構成管理の勉強になりました。得るものが多かったです。本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問